AWK getline示例,请解释输出?

时间:2017-05-01 07:22:30

标签: 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

2 个答案:

答案 0 :(得分:1)

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 },awk会从stdin读取第一条记录,即1

通过管道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

答案 1 :(得分:0)

seq 5生成

1
2
3
4
5

awk的{​​{1}}块在主块之前执行 BEGIN读取一行,该行在getline块中打印为BEGIN 然后主块读取剩余的行。

$0