【问题标题】:Printing first occurence of multiple files with awk使用 awk 打印多个文件的首次出现
【发布时间】:2019-11-21 21:28:36
【问题描述】:

我在子目录中有 .txt 文件,我希望在包含字符串“CHEESE”的行的第 4 列中提取第一次出现的字符串。

我使用的代码如下:

awk '/CHEESE/{print $4}' ./*/*/*.txt | pr -15s',' > ofile.csv

这个不起作用,因为它会在所有文件的特定列中打印所有出现的字符串。

我尝试如下添加“退出”:

awk '/CHEESE/{print $4;exit;}' ./*/*/*.txt | pr -15s',' > ofile.csv

这打印了一次 - 但仅在一个文件中。

如何使所有文件只打印一次?

提前谢谢你。

【问题讨论】:

    标签: awk


    【解决方案1】:

    应该这样做:

    awk '/CHEESE/ && f!=1 {print $4;f=1}' ./*/*/*.txt | pr -15s',' > ofile.csv
    

    只有在未设置f 时才会打印。找到CHEESE时,设置f,这样就不再打印了

    【讨论】:

      【解决方案2】:

      如果你使用的是 gawk,可以试试nextfile 语句。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-02
        • 2021-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-09
        • 2017-01-24
        相关资源
        最近更新 更多