awk getline은 파일의 처음 세 줄을 표시합니다.

awk getline은 파일의 처음 세 줄을 표시합니다.

나는 그것을 사용하고 있다

awk 'BEGIN {while((getline gf < "awk.script") > 0) {print gf}}' 

이 패턴의 처음 세 줄을 읽어주세요. . 을 사용할 수 있지만 head -3두 파일 간에 줄을 전환해야 하기 때문에 그렇게 하고 싶지 않습니다.

awk.script에 다음이 포함되어 있다고 가정합니다.

line 1
line 2
line 3 <------- until here
line 4 

이것으로 원래 cmd를 업데이트하려고합니다

 awk 'BEGIN {while((getline gf < "awk.script") > 0) && f{print $gf;f=0};NR<=3{f=1}}'

이 코드는 링크에 제공된 예제의 영향을 받습니다. https://stackoverflow.com/questions/17908555/printing-with-sed-or-awk-a-line-following-a-matching-pattern

내가 얻는 오류는 다음과 같습니다.

awk: cmd. line:1: BEGIN {while((getline gf < "awk.script") > 0) f{print $gf;f=0};NR<=3{f=1}}
awk: cmd. line:1:                                                ^ syntax error
awk: cmd. line:1: BEGIN {while((getline gf < "awk.script") > 0) f{print $gf;f=0};NR<=3{f=1}}
awk: cmd. line:1:

어떻게 하나요? 감사해요

답변1

getline을 사용할 필요는 없지만 이것이 필요한 경우:

echo|awk 'BEGIN {while((getline gf < "awk.script") > 0) {print gf; if(++i > 2) break;}}'

다음과 같은 동일한 동작이 나타날 수 있습니다.

awk 'NR>3{exit} {print $0}' input.txt

시도에 두 가지 문제가 있습니다. NR은 증가하지 않으며 getline절과 해당 코드 블록 사이에 and 연산자를 사용하면 안 됩니다. 귀하의 검사가 부적절해 보입니다.&&whilef

관련 정보