【问题标题】:awk to find number of columns for each line and exit if more than requiredawk 查找每行的列数,如果超过要求则退出
【发布时间】:2015-06-03 15:21:12
【问题描述】:

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

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

ME
TEST
HELLO
WORLD
BOO,HOO
BYE BYE

我发现使用 awk 可以通过以下方式获取列数...

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

这会返回...

1
1
1
1
2
1

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

【问题讨论】:

    标签: bash awk exit


    【解决方案1】:

    当然可以:

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

    这将给出如下输出:

    ME
    TEST
    HELLO
    WORLD
    

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


    编辑:根据 OP 下面的 cmets 想要打印 2 列的第一行并退出。这个命令应该可以工作:

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

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      相关资源
      最近更新 更多