awk查找每行的列数,如果超过需要则退出

Ric*_*d C 6 bash awk exit

我正在尝试逐行读取文件并检查当前行是否包含多个列.如果它包含多个,我希望脚本中止.

我有一个名为test的文件,它包含以下内容......

ME
TEST
HELLO
WORLD
BOO,HOO
BYE BYE
Run Code Online (Sandbox Code Playgroud)

我发现使用awk我可以通过使用以下内容获得列数...

awk -F',' '{print NF}' test
Run Code Online (Sandbox Code Playgroud)

这回来了......

1
1
1
1
2
1
Run Code Online (Sandbox Code Playgroud)

有没有办法让脚本在找到'2'后退出并打印一个错误,说明$ 1(在这种情况下BOO,HOO)包含两列?

anu*_*ava 8

当然你可以这样做:

awk -F, 'NF > 1{exit} 1' file
Run Code Online (Sandbox Code Playgroud)

这将输出为:

ME
TEST
HELLO
WORLD
Run Code Online (Sandbox Code Playgroud)

NF>1条件超过1列时,条件退出awk.


编辑:根据下面的评论,OP希望打印第一行有2列并退出.这个命令应该工作:

awk -F, 'NF > 1{print; exit}' file
BOO,HOO
Run Code Online (Sandbox Code Playgroud)

  • 是的,但这不会保存任何输入:) (3认同)
  • @anubhava,您可能想在答案中加上"正确"的答案. (2认同)