Red*_*son 2 linux bash shell scripting awk
我试图awk在bash脚本中检查文件是否为空.文件为空的此条件如下:如果文件的第一行的字段值后跟------(并且后面没有其他内容),则认为该文件为空.
这是特殊文件的结构:
file.txt的
col1 col2 col3 col4 col5
------
Run Code Online (Sandbox Code Playgroud)
到目前为止,这就是我所拥有的:
awk '
{
if (NR > 2)
print "NOT EMPTY"
else
print "EMPTY"
}
' file.txt
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
EMPTY
Run Code Online (Sandbox Code Playgroud)
我得到的空虚是:
EMPTY
EMPTY
Run Code Online (Sandbox Code Playgroud)
我如何只获得EMPTY一个输出?我知道这可能很简单,但我找不到任何东西.谢谢!
如果需要进一步解释,请告诉我.
编辑:此外,如果额外的空白行添加到file.txt,那么它将打印EMPTY多少额外的行.有更一般的方法吗?
awk 'END{print(NR>2)?"NOT EMPTY":"EMPTY"}'
Run Code Online (Sandbox Code Playgroud)
您需要将 awk 逻辑放在END块中,否则它会为每一行输入执行:
awk '
END {
if (NR > 2)
print "NOT EMPTY"
else
print "EMPTY"
}
' file.txt
Run Code Online (Sandbox Code Playgroud)