我正在尝试使用bash脚本中的awk
检查文件是否为空。文件为空的此条件如下:如果文件的第一行的字段值后跟------
(后面没有其他内容),则认为该文件为空。
以下是该特殊文件的结构:
file.txt的
col1 col2 col3 col4 col5
------
到目前为止,这就是我所拥有的:
awk '
{
if (NR > 2)
print "NOT EMPTY"
else
print "EMPTY"
}
' file.txt
我想要的输出是:
EMPTY
我得到的空虚是:
EMPTY
EMPTY
如何仅将EMPTY
作为一个输出?我知道这可能很简单但我找不到任何东西。谢谢!
如果需要进一步解释,请告诉我。
编辑:此外,如果向file.txt添加额外的空白行,那么它将打印EMPTY
以获得尽可能多的额外行。有更一般的方法吗?
答案 0 :(得分:6)
awk 'END{print(NR>2)?"NOT EMPTY":"EMPTY"}'
答案 1 :(得分:3)
你需要将你的awk逻辑放在END
块中,否则它会针对每一行输入执行:
awk '
END {
if (NR > 2)
print "NOT EMPTY"
else
print "EMPTY"
}
' file.txt