我在用着
awk 'BEGIN {while((getline gf < "awk.script") > 0) {print gf}}'
给我读一下该模式的前 3 行三行。我可以用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