awk + 첫 번째 줄부터 일치하는 단어까지 줄 인쇄

awk + 첫 번째 줄부터 일치하는 단어까지 줄 인쇄

일치하는 단어가 나올 때까지 파일의 모든 줄을 인쇄하고 싶습니다. 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

관련 정보