Suyog Sakegaonkar
Suyog Sakegaonkar

Reputation: 225

How can I write in nth column of a file in awk?

For example:

abc
xyz
123
546

input.txt:

asdad
asdad
adghf
dfytr

I wanted to add the above column in 2nd column. The expected output is given below.

output.txt:

asdad  abc
asdad  xyz
adghf  123
dfytr  567

Upvotes: 1

Views: 536

Answers (4)

Foo Bah
Foo Bah

Reputation: 26251

In awk:

awk 'NR==FNR {x[NR] = $0} NR != FNR {print x[FNR], $0}' col1_file col2_file

Though its probably better to use paste

Upvotes: 0

bash-o-logist
bash-o-logist

Reputation: 6911

You can use just bash

exec 4<file2
while read -r line1
do
 read -r line2 <&4
 echo $line $line2
 done < file1
exec 4>&-

Upvotes: 0

glenn jackman
glenn jackman

Reputation: 246754

paste is the easiest solution. Here's an awk example that doesn't have to store the entire first file in memory:

awk '{getline second < "example"; printf("%s\t%s\n",$0,second)}' input.txt

Upvotes: 3

paxdiablo
paxdiablo

Reputation: 881153

The command you're looking for is paste rather than awk. You could do it in awk but you'll probably find that paste is easier:

pax> cat qq1
asdad
asdad
adghf
dfytr

pax> cat qq2
abc
xyz
123
546

pax> paste qq1 qq2
asdad   abc
asdad   xyz
adghf   123
dfytr   546

Use paste -d' ' qq1 qq2 if you want a space rather than a tab for the delimiter.

Upvotes: 3

Related Questions