Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multiple awk to print in the same line

I have 5 files

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

Pattern used

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;

Output

a
b
c
d
e

But I need it to be

a b c d e

Can someone please help me?

like image 454
arjun9916 Avatar asked Oct 30 '25 08:10

arjun9916


2 Answers

You don't need multiple awk. You can actually combine them in single awk:

awk FNR==21 {if (NR>FNR) printf OFS; printf $1}' {a,b,c,d,e}.txt
a b c d e
  • FNR==21 will run this block for line #21 in each input file
  • NR>FNR will print a space for 2nd file onwards
like image 142
anubhava Avatar answered Oct 31 '25 20:10

anubhava


Try this

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

Just add an tr command

tr '\n' ' '
like image 39
Skynet Avatar answered Oct 31 '25 21:10

Skynet



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!