
나는 그것을 사용하고 있다
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 연산자를 사용하면 안 됩니다. 귀하의 검사가 부적절해 보입니다.&&
while
f