줄을 파싱하고 두 줄 사이에서 찾을 수있는 텍스트를 추출하기 위해 bash에서 작성할 수있는 정규식이란 무엇입니까? (그래서 ex : 1 : | hey | 2 : | boy |가 될 것입니다.) 그리고 그 단어들을 일종의 배열로 유지 하시겠습니까?bash의 줄에있는 두 구분 기호 사이에서 텍스트를 추출하려면 어떻게해야합니까?
답변
복잡한 정규 표현식이 필요 없습니다. 헤이 | | : 2 : 1 : | ""스플릿 후 모든 둘째 요소는
$ echo s="|hey| 2: |boy|" | awk -F"|" '{for(i=2;i<=NF;i+=2)print $i}'
hey
boy
+1 IFS, set 및()를 잘 사용합니다. 그러나 왼쪽 및 오른쪽 구분 기호가 다른 경우 (예 : '<' and '>') 순서가 의미가 있거나 구분 기호가 여러 문자 (예 : "-") 인 경우이 방법은 작동하지 않습니다. regex 접근법은 좀 더 보편적/융통성있는 IMHO입니다. 더 유연하게 만드는 –
도 어렵지 않습니다. 그것이 OP에 의해 요구 될 때까지, 그것은 그대로 둔다. – ghostdog74
를 사용하여 자신의 대답에 sed -e 's,.*|\(.*\)|.*,\1,'
$ foundall=$(echo '1: |hey| 2: |boy|' | sed -e 's/[^|]*|\([^|]\+\)|/\1 /g')
$ echo $foundall
hey boy
$ for each in ${foundall}
> do
> echo ${each}
> done
hey
boy
, (한 줄에 두 개 이상의 파이프가 가정) 파이프의 마지막 쌍 사이에 무엇을 당신이 출력.
첫 번째 쌍 사이에 무엇이 출력됩니다 :
이sed -e 's,[^|]*|\([^|]*\)|.*,\1,'
가장 바깥 쪽 쌍 사이에 무엇이 의지 출력 (그래서 그들 사이에 표시 파이프 표시됩니다) :
sed -e 's,[^|]*|\(.*\)|.*,\1,'
#!/bin/bash
_str="ex: 1: |hey| 2: |boy|"
_re='(\|[^|]*\|)(.*)' # in group 1 collect 1st occurrence of '|stuff|';
# in group 2 collect remainder of line.
while [[ -n $_str ]];do
[[ $_str =~ $_re ]]
[[ -n ${BASH_REMATCH[1]} ]] && echo "Next token is '${BASH_REMATCH[1]}'"
_str=${BASH_REMATCH[2]}
done
수율
Next token is '|hey|'
Next token is '|boy|'
- 1. HTML :: Parser를 사용하여 태그 사이에서 텍스트를 추출하려면 어떻게해야합니까?
- 2. 두 기호 사이에서 문자 또는 단어 추출
- 3. 특정 바이너리 파일 형식에서 텍스트를 추출하려면 어떻게해야합니까?
- 4. 기호 사이에서 텍스트를 가져 오려면 정규식을 사용 하시겠습니까?
- 5. 태그 사이에서 텍스트를 추출하는 Java 정규식
- 6. 두 테이블 사이에서 검색
- 7. 두 문자 사이에서 문자열 추출
- 8. 두 태그 사이에서 텍스트를 추출하는 일반 표현식과 태그 이름 또한
- 9. bash의 루프에서 표준 입력을 읽고 텍스트를 파일에 추가하려면 어떻게해야합니까?
- 10. Perl에서 쉼표로 구분 된 값에서 값을 추출하려면 어떻게해야합니까?
- 11. 구분 기호 배열로 분해
- 12. 셀 구분 기호
- 13. WPF 구분 기호 위치
- 14. ListView의 "구분 기호"
- 15. 루비 YAML 구분 기호
- 16. mysql 변경 구분 기호
- 17. Python의 문자열 구분 기호
- 18. 필드 구분 기호 변경
- 19. DataGrid 열 구분 기호 만들기
- 20. FlowDocument에서 같은 줄에있는 두 블록
- 21. 워드 VBA는 - 구분 기호 사이의 텍스트를 찾아 경우
- 22. 자바 스캐너 구분 기호 사용법
- 23. URL에서 도메인을 추출하려면 어떻게해야합니까?
- 24. 개체에서 값을 추출하려면 어떻게해야합니까?
- 25. 문자열에서 숫자를 추출하려면 어떻게해야합니까?
- 26. 잘못된 위치에있는 UITableView 구분 기호
- 27. Perl에서 HTML의 URL 및 링크 텍스트를 추출하려면 어떻게해야합니까?
- 28. Clip UITableView 셀의 구분 기호
- 29. Ext.form.NumberField의 천 단위 구분 기호
- 30. 안드로이드 스캐너 구분 기호 문제
는 "전 당신의 예를 들어 당신이
출력
는 AWK를 사용하여 원하는 것입니다 | 소년 | " 구문 분석 할 라인이나 구문 분석 결과? 후자의 경우 결과를 산출 할 샘플 라인은 무엇입니까? 여러 접근법을 생각해 볼 수는 있지만 입력 내용이 무엇인지에 따라 달라지며 "최상의"접근 방식은 "배열"로 수행 할 작업에 따라 다릅니다. –
예제는 샘플 LINE입니다. 실제로 예제는 새로운 라인에있을 수 있습니다. – syker
내가 배열과 함께하고 싶은 것은 사이에 쉼표라고 말하고 특별한 형식의 순서로 인쇄하고 정렬하는 것뿐입니다. – syker