我正在尝试使用awkif string为空来打印特定文本.它适用于以下情况
noob@noob:~$ echo "" | awk '{if ($0=="") print "not playing"}'
not playing
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在下面的情况下采取类似的方法时,它不起作用
noob@noob:~$ mpc current | awk '{if ($0=="") print "not playing"}'
noob@noob:~$
Run Code Online (Sandbox Code Playgroud)
我相信mpc current如果没有播放歌曲的输出是一个空字符串.
noob@noob:~$ mpc current
noob@noob:~$ #empty string
Run Code Online (Sandbox Code Playgroud)
那么,我的empty string 错误假设是什么?
显然它根本没有打印,甚至没有换行.试试这个.
mpc current | awk '{ print } END { if (!NR) print "not playing" }'
Run Code Online (Sandbox Code Playgroud)
这打印任何输出.如果你不想要那个,请拿出来{ print }.
awk依次处理每一行,然后在EOF执行任何END块.如果没有输入行,则在开始时将有一个EOF,变量NR将为零,因此END块将打印占位符文本.(我最初有一个专用的变量,但是NRBob Vale的答案中使用的内置行号变量显然更优雅.对于每个awk读取的输入行,它都会递增.)
| 归档时间: |
|
| 查看次数: |
17207 次 |
| 最近记录: |