如何在bash脚本中使用awk检查文件是否为空?

时间:2014-07-02 15:56:09

标签: linux bash shell awk scripting

我正在尝试使用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以获得尽可能多的额外行。有更一般的方法吗?

2 个答案:

答案 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