awk getline 显示文件中的前三行

awk getline 显示文件中的前三行

我在用着

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 不会随 递增,并且不应在子句及其代码块之间使用getlineand 运算符。您的检查看起来不合适。&&whilef

相关内容