【问题标题】:Include first line with AWK and set output based on filename在 AWK 中包含第一行并根据文件名设置输出
【发布时间】:2013-10-17 09:50:42
【问题描述】:

cat /path/to/file1 /path/to/file2 | awk '{if ($3~/^TCF/ || $3~/^GLI/) print $0;}' > /path/to/test1.txt

你知道如何:

在 test1.txt 输出中包含 file1 中的第一行? 而且,如果 TCF 和 GLI 来自 file1 或 file2,是否可以包含?

非常感谢!

【问题讨论】:

    标签: awk grep cat


    【解决方案1】:

    试试这个命令:

     awk '$3~/^TCF/ || $3~/^GLI/ || NR==1 { print FILENAME, $0 }' /path/to/file1 /path/to/file2 > /path/to/test1.txt
    
    • NR 是总输入流中的当前记录数。
    • FILENAME 是当前输入文件的名称。

    【讨论】:

    • 根据第二个问题,我将添加 {print FILENAME, $0} 以显示文件名。
    【解决方案2】:

    可以缩短一些

    awk '{if ($3~/^TCF|^GLI/ || NR==1 ) print $0,FILENAME}' /path/to/file1 /path/to/file2 > /path/to/test1.txt
    

    【讨论】:

      【解决方案3】:
      awk '{
            if ($3~/^TCF/ || $3~/^GLI/ || NR==1 ) 
            print $0,FILENAME
           }' /path/to/file1 /path/to/file2 >/path/to/test1.txt
      

      【讨论】:

        猜你喜欢
        • 2012-12-21
        • 2019-04-16
        • 2022-11-11
        • 2019-11-05
        • 1970-01-01
        • 1970-01-01
        • 2021-02-03
        • 2023-03-31
        • 1970-01-01
        相关资源
        最近更新 更多