这是test.file:
2017
2018
这是我在终端尝试的内容:
$ echo 2 | awk '{ print 6 }'
6
$ cat test.file | awk '{ print 6 }'
6
6
我的问题是:
为什么echo
不像cat
那样显示数字'6'两次?
答案 0 :(得分:5)
使用cat
提供的文件包含两行输入,而使用echo
流式传输的文件只包含一行。
如果您将echo
更改为等效,例如:
{ echo 2017; echo 2018; } | awk '{ print 6 }'
...你得到两行输出。
这里需要记住的是awk
脚本由一般形式PATTERN { BLOCK }
的块组成,其中PATTERN确定是否以及何时执行BLOCK。 (这两个都是可选的:默认模式是为每一行运行;默认模块是{ print $0 }
,以完整打印当前行。
当你只有{ print 6 }
时,你保持默认模式(即为每一行输入运行该模块)。因此,当您输入两行输入时,{ print 6 }
会运行两次。