按行添加两个不同的文件

时间:2016-02-14 10:04:18

标签: bash unix awk sed paste

我有两个文件file1file2,每行内部都有不同的数据,并希望将file2中的每一行添加到{{1}中每一行的末尾}}。

像这样:

file1包含:

file1

file2包含:

1
2
3

结果必须是:

a
b
c

无法使用1 a 2 b 3 c 命令:(仅限 - pastesedawkcat。有任何建议吗?

5 个答案:

答案 0 :(得分:2)

这可能适合你(GNU sed):

sed 'R file2' file1 | sed 'N;s/\n/ /' > file3

这使用了两次sed调用。第一行将file2的每一行追加到file1的每一行。第二种:一次读取两行,并用空格替换它们之间的换行符。

答案 1 :(得分:1)

$ awk 'NR==FNR {a[NR]=$0; next} {print a[FNR], $0}' file1 file2
1 a
2 b
3 c    

答案 2 :(得分:1)

粘贴是正确的工具,上面的两个解决方案可能更有效。我只想添加一个"纯粹的bash"版本:

$ while read r1 <&3 && read r2 <&4 ; do echo "$r1 $r2" >> out ; done 3<file1 4<file2

答案 3 :(得分:0)

catpr

的关系如何
$ cat file1 file2 | pr -2ts' '

1 a
2 b
3 c

答案 4 :(得分:0)

awk解决方案,为file1的下一行file2的每一行读取,然后打印它们:

 awk '{getline var < "file2"; print $0, var}' file1