如何在awk中写入文件的第n列?

时间:2011-09-13 04:55:10

标签: shell awk

例如:

abc
xyz
123
546

input.txt中:

asdad
asdad
adghf
dfytr

我想在第二列中添加上面的列。预期的输出如下:

output.txt的:

asdad  abc
asdad  xyz
adghf  123
dfytr  567

4 个答案:

答案 0 :(得分:3)

您要查找的命令是paste而不是awk。你可以在awk它,但你可能会发现paste更容易:

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

如果您想要分隔符的空格而不是制表符,请使用paste -d' ' qq1 qq2

答案 1 :(得分:3)

paste是最简单的解决方案。这是一个awk示例,不必将整个第一个文件存储在内存中:

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

答案 2 :(得分:0)

您只能使用bash

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

答案 3 :(得分:0)

在awk中:

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

虽然使用粘贴可能更好