Bash AWK getline示例,请解释输出?
我在getline中找到了这个Bash AWK getline示例,请解释输出?,bash,awk,Bash,Awk,我在getline中找到了这个awk示例,但无法理解它是如何工作的 seq 5 | awk 'BEGIN { getline; print "Read ahead first line", $0 } {print $0 }' 输出为: Read ahead first line 1 2 3 4 5 序列5产生 1 2 3 4 5 awk的BEGIN块在主块之前执行。 getline读取一行,该行作为$0打印在BEGIN块中 然后主块读取其余的行 $ seq 5 | awk 'BEGIN {
awk
示例,但无法理解它是如何工作的
seq 5 | awk 'BEGIN { getline; print "Read ahead first line", $0 } {print $0 }'
输出为:
Read ahead first line 1
2
3
4
5
序列5
产生
1
2
3
4
5
awk
的BEGIN
块在主块之前执行。getline
读取一行,该行作为$0
打印在BEGIN
块中然后主块读取其余的行
$ seq 5 | awk 'BEGIN { getline; print "BEGIN read", $0} {print "main read", $0 }'
BEGIN read 1
main read 2
main read 3
main read 4
main read 5
序列5
产生
1
2
3
4
5
awk
的BEGIN
块在主块之前执行。getline
读取一行,该行作为$0
打印在BEGIN
块中然后主块读取其余的行
$ seq 5 | awk 'BEGIN { getline; print "BEGIN read", $0} {print "main read", $0 }'
BEGIN read 1
main read 2
main read 3
main read 4
main read 5
你会得到
$ seq 5
1
2
3
4
5
从BEGIN{getline;print“Read ahead first line”,$0}
,awk将从stdin
读取第一条记录,即1
通过管道seq 5 | awk'{…}
(第一个程序|第二个程序
)管道用于将流从一个程序重定向到另一个程序。当一个程序的标准输出通过管道发送到另一个程序时
$ seq 5 | awk 'BEGIN { getline; print "Read ahead first line", $0 }'
Read ahead first line 1
和{print$0}
之后,BEGIN块将读取2到5的剩余记录,下面是如何在BEGIN
块内不打印
$ seq 5 | awk 'BEGIN { getline} {print $0}'
2
3
4
5
你会得到
$ seq 5
1
2
3
4
5
从BEGIN{getline;print“Read ahead first line”,$0}
,awk将从stdin
读取第一条记录,即1
通过管道seq 5 | awk'{…}
(第一个程序|第二个程序
)管道用于将流从一个程序重定向到另一个程序。当一个程序的标准输出通过管道发送到另一个程序时
$ seq 5 | awk 'BEGIN { getline; print "Read ahead first line", $0 }'
Read ahead first line 1
和{print$0}
之后,BEGIN块将读取2到5的剩余记录,下面是如何在BEGIN
块内不打印
$ seq 5 | awk 'BEGIN { getline} {print $0}'
2
3
4
5
感谢Sundeep编辑此问题不客气。。。请参阅以备将来使用。。。此外,您可以标记对您最有帮助的答案…感谢Sundeep编辑问题,不客气。。。请参阅以备将来使用。。。此外,您可以标记对您最有帮助的答案…困惑在于使用getline并在Begin中打印$0。谢谢你的回答。它非常有用的@molbdniloConfusion与getline一起使用,并在Begin中打印$0。谢谢你的回答。它很有用@molbdnilo@rachnagarg虽然Akshay很好地解释了代码的语义,但我只想确保您永远不会真正编写代码。如果你曾经考虑过使用
getline
,那么一定要先阅读并完全理解。@rachnagarg虽然Akshay很好地解释了代码的语义,但我只想确保你永远不会真正编写代码。如果您曾经考虑使用getline
,请确保首先阅读并完全理解。