开发者

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 colu开发者_如何学Cmn. The expected output is given below.

output.txt:

asdad  abc
asdad  xyz
adghf  123
dfytr  567


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


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.


You can use just bash

exec 4<file2
while read -r line1
do
 read -r line2 <&4
 echo $line $line2
 done < file1
exec 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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜