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

2020-03-30 12:32发布

问题:

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

回答1:

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


回答2:

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.



回答3:

You can use just bash

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


回答4:

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



标签: shell awk