두 문자열 사이를 인쇄하는 방법을 찾는 동안 길을 잃어 버렸습니다. 이 두 문자열에는 <,>
과 같은 특수 문자가 포함됩니다.awk만을 사용하는 두 정규 표현식 사이에서 인쇄
sed
을 완벽하게 사용할 수는 있지만 사용할 수는 없지만 결과에 대해 추가 텍스트 조작이 필요하므로 awk
이 필요합니다. 내가 사이의 텍스트에 intrested입니다
$ cat input.txt
RANDOM CLI> THIS IS BEFORE WINDOW
RANDOM CLI>
RANDOM CLI>log list all show...
bla bla
bla bla
bla bla bal
bla bla bla bla
RANDOM CLI>
RANDOM CLI>
RANDOM CLI>THIS IS OUT OF WINDOW
"RANDOM CLI> 로그 목록의 모든 쇼 ..." 옆 "RANDOM CLI>"
이 : 여기
샘플 파일입니다 , 나오지도를 사용하여 네브라스카을 아래와 같이 할 수있다 :$ sed -n '/CLI>log/,/ CLI>/p' cli
RANDOM CLI>log list all show...
bla bla
bla bla
bla bla bal
bla bla bla bla
RANDOM CLI>
을하지만 언급으로, sed
은 이타 아니다 내 요구 사항에 대 한 블 리와 awk
유일한 솔루션이 필요합니다.
일부 특수 문자는 이스케이프하지만 도움은되지 않습니다. 패턴 CLI>
단지 첫 번째 행 후 인쇄를 중지 AWK을 따라서뿐만 아니라 다양한 원인 시작에서 발견되기 때문에
awk '/CLI>log/,/ CLI>/' input.txt
RANDOM CLI>log list all show...
awk '/CLI\>log/,/CLI\>/' input.txt
awk '/CLI>log/{f=1;for (i=0;i<=NR;i++){getline}}/CLI>/{f=0}f' cli
'<,>'문자에는 특별한 것이 없습니다. 첫 번째 awk 시도는 단어 경계로 바꿀 GNU awk 또는 GNU sed에서 이스케이프 처리하여'>' "special"을 만듭니다. awk을 더 잘 알기 전까지는 getline을 사용하지 마십시오. http://awk.freeshell.org/AllAboutGetline을 참조하십시오. –
@ Edmonton 감사합니다. –