【问题标题】: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