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

awk to find number of columns for each line and exit if more than required

我试图逐行读取文件并检查当前行是否包含多于一列。如果它包含多个,我希望脚本中止。

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

ME
TEST
HELLO
WORLD
BOO,HOO
BYE BYE

我发现使用 awk 可以使用以下命令获取列数...

awk -F',' '{print NF}' test

还有这个returns...

1
1
1
1
2
1

有没有办法让脚本在找到“2”后退出并打印一条错误,指出 $1(在本例中为 BOO,HOO)包含两列?

当然可以:

awk -F, 'NF > 1{exit} 1' file

这将给出输出:

ME
TEST
HELLO
WORLD

as NF>1 一旦超过 1 列,条件就会退出 awk。


编辑: 根据下面的评论,OP 想要打印第一行两列并退出。此命令应该有效:

awk -F, 'NF > 1{print; exit}' file
BOO,HOO