Bash AWK 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 {

我在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 { 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
,请确保首先阅读并完全理解。