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

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多少额外的行.有更一般的方法吗?

Ell*_*Ell 6

awk 'END{print(NR>2)?"NOT EMPTY":"EMPTY"}'
Run Code Online (Sandbox Code Playgroud)

  • 甚至`awk'END {print(NR> 2?"NOT":"")"EMPTY"}'` (2认同)

anu*_*ava 5

您需要将 awk 逻辑放在END块中,否则它会为每一行输入执行:

awk '
    END {
      if (NR > 2)
        print "NOT EMPTY"
      else
        print "EMPTY"
    }
' file.txt
Run Code Online (Sandbox Code Playgroud)