일치하는 단어가 나올 때까지 파일의 모든 줄을 인쇄하고 싶습니다. awk를 사용하여 이를 수행하는 방법을 제안해주세요.
예를 들어
PPP라는 단어까지 모든 줄을 인쇄하고 싶습니다.
참고 첫 번째 줄은 AAA와 달라야 합니다(모든 단어).
cat file.txt
AAA ( the first line/word chuld be any word !!!!! )
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
MMM
(((
&&&
그래서 이걸 구해야 해
AAA
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
기타 예(KJGFGHJ까지 인쇄하고 싶습니다)
cat file.txt1
HG
KJGFGHJ
KKKK
그래서 난 받아야 해
HG
KJGFGHJ
답변1
노력하다:
$ awk '1;/PPP/{exit}' file
AAA
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
답변2
또는 행에서 "PPP"가 처음으로 일치할 때까지 첫 번째 행(NR은 1)과 일치하는 범위 패턴을 사용합니다.
awk 'NR==1,/PPP/' file
행이 "PPP"와 정확히 일치해야 하는 경우 다음만 사용하십시오.
awk 'NR==1,/^PPP$/' file
매개변수 목록의 모든 파일에 대해 동일한 작업을 수행하려면 처리된 각 파일의 첫 번째 줄을 1로 재설정하는 FNR 변수를 사용하세요.
awk 'FNR==1,/PPP/' file1 file2 ...
답변3
OP가 말했듯이 그의 파일의 첫 번째 줄이나 단어에는 ( PPP
그 자체와 같은) 어떤 단어라도 포함될 수 있으므로 이를 확인하고 일치 항목에서 첫 번째 줄을 이스케이프하고 awk
거기에서 종료되지 않도록 해야 합니다.
그런 다음 다음을 시도해 볼 수 있습니다.
입력 파일:
PPP # the first line/word chuld be any word !!!!! )
BBB
$$$
JJJ
OOO
PPP
345
PPP
%%%
주문하다:
awk '1;/PPP/{if (NR>1) exit}' file
산출:
PPP # the first line/word chuld be any word !!!!! )
BBB
$$$
JJJ
OOO
PPP