【问题标题】:Multiple awk to print in the same line多个awk在同一行打印
【发布时间】:2015-01-09 06:25:46
【问题描述】:

我有 5 个文件

a.txt
b.txt
c.txt 
d.txt 
e.txt

使用的模式

awk 'NR==21 {print $1}' a.txt; awk 'NR==21 {print $1}' b.txt; awk 'NR==21 {print $1}' c.txt; awk 'NR==21 {print $1}' d.txt; awk 'NR==21 {print $1}' e.txt;

输出

a
b
c
d
e

但我需要它是

a b c d e

有人可以帮帮我吗?

【问题讨论】:

    标签: linux bash shell scripting


    【解决方案1】:

    您不需要多个 awk。您实际上可以将它们组合在一个 awk 中:

    awk FNR==21 {if (NR>FNR) printf OFS; printf $1}' {a,b,c,d,e}.txt
    a b c d e
    
    • FNR==21 将为每个输入文件中的第 21 行运行此块
    • NR>FNR 将为第二个文件打印一个空格

    【讨论】:

      【解决方案2】:

      试试这个

      awk 'NR==21 {print $1}' a.txt; awk 'NR==21 {print $1}' b.txt; awk 'NR==21 {print $1}' c.txt; awk 'NR==21 {print $1}' d.txt; awk 'NR==21 {print $1}' e.txt; |tr '\n' ' '
      

      只需添加一个tr 命令

      tr '\n' ' '
      

      【讨论】:

        【解决方案3】:

        通过 xargs 管道

        awk 'NR==21 {print $1}' a.txt; awk 'NR==21 {print $1}' b.txt; awk 'NR==21 {print $1}' c.txt; awk 'NR==21 {print $1}' d.txt; awk 'NR==21 {print $1}' e.txt | xargs
        

        【讨论】:

          猜你喜欢
          • 2020-09-03
          • 2018-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-11
          • 2019-07-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多