2015-01-09 127 views
3

我有5个文件多awk来在同一行打印

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 

有人可以帮我吗?

回答

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

试试这个

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