多个awk在同一行中打印

时间:2015-01-09 06:25:47

标签: linux bash shell scripting

我有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

有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:2)

您不需要多个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将为第二个文件打印空格

答案 1 :(得分:1)

试试这个

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' ' '

答案 2 :(得分:0)

通过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