多个awk在同一行打印

Multiple awk to print in the same line

我有 5 个文件

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

使用的模式

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

输出

a
b
c
d
e

但我需要它

a b c d e

有人可以帮我吗?

试试这个

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

只需添加一个tr命令

tr '\n' ' '

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

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

管道通过 xargs

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