繁体   English   中英

AWK getline示例,请解释输出?

[英]AWK getline example , please explain the output?

我用getline找到了这个awk示例,但无法理解它是如何工作的。

seq 5 | awk 'BEGIN { getline; print "Read ahead first line", $0 } {print $0 }'

输出为:

Read ahead first line 1
2
3
4
5
seq 5 | awk 'BEGIN { getline; print "Read ahead first line", $0 } {print $0 }'

seq 5你会得到

$ seq 5
1
2
3
4
5

并从BEGIN { getline; print "Read ahead first line", $0 } BEGIN { getline; print "Read ahead first line", $0 } ,awk将从stdin读取第一条记录,即1

贯通管seq 5 | awk '{...}' seq 5 | awk '{...}'first program | second program
管道用于将流从一个程序重定向到另一个程序。 当程序的标准输出通过管道发送到另一个时

$ seq 5 | awk 'BEGIN { getline; print "Read ahead first line", $0 }'
Read ahead first line 1

和BEGIN块之后的{print $0 }将读取剩余的2到5条记录,这是如何在BEGIN块内不打印的方式

$ seq 5 | awk 'BEGIN { getline} {print $0}'
2
3
4
5

seq 5产生

1
2
3
4
5

awkBEGIN块在主块之前执行。
getline读取一行,该行在BEGIN块中显示为$0
然后,主块读取剩余的行。

$ 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM