如果字符串为空,则使用AWK打印指定的文本

Ran*_*Rag 2 string awk

我正在尝试使用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 错误假设是什么?

tri*_*eee 8

显然它根本没有打印,甚至没有换行.试试这个.

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读取的输入行,它都会递增.)