使用awk在'cat'和'echo'命令之间有什么区别

时间:2018-04-27 17:43:48

标签: bash shell awk

这是test.file:

2017
2018

这是我在终端尝试的内容:

$ echo 2 | awk '{ print 6 }'   
6
$ cat test.file | awk '{ print 6 }'
6
6

我的问题是:

为什么echo不像cat那样显示数字'6'两次?

1 个答案:

答案 0 :(得分:5)

使用cat提供的文件包含两行输入,而使用echo流式传输的文件只包含一行。

如果您将echo更改为等效,例如:

{ echo 2017; echo 2018; } | awk '{ print 6 }'

...你得到两行输出。

这里需要记住的是awk脚本由一般形式PATTERN { BLOCK }的块组成,其中PATTERN确定是否以及何时执行BLOCK。 (这两个都是可选的:默认模式是为每一行运行;默认模块是{ print $0 },以完整打印当前行。

当你只有{ print 6 }时,你保持默认模式(即为每一行输入运行该模块)。因此,当您输入两行输入时,{ print 6 }会运行两次。