多个awk在同一行中打印

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

但我需要它

 abcde 

有人可以帮帮我吗?

你不需要多个awk。 你实际上可以把它们组合成单个awk:

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

尝试这个

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