Bash 如何将列从一个文件添加到另一个文件

Bash 如何将列从一个文件添加到另一个文件,bash,awk,Bash,Awk,我有一个文件,其中有两列 1 1 2 3 3 4 和一个文件,其中一列为 6 7 9 我想在第一个文件中添加第二个文件。输出应为: 1 1 6 2 3 7 3 4 9 注意:将处理相同长度的文件。如果文件长度不同,请使用解决方案 为了方便起见,这里有一个awk命令,我认为应该模拟paste。不过纯粹是为了好玩,如果我是你们,我还是会选择解决方案(或者可能不是!) awk'NR==FNR{a[++y]=$0;next}{b[++x]=$0} END{z=x>y?x:y;而(++i纯溶液可以

我有一个文件,其中有两列

1 1
2 3
3 4
和一个文件,其中一列为

6
7
9
我想在第一个文件中添加第二个文件。输出应为:

1 1 6
2 3 7
3 4 9
注意:将处理相同长度的文件。如果文件长度不同,请使用解决方案


为了方便起见,这里有一个
awk
命令,我认为应该模拟
paste
。不过纯粹是为了好玩,如果我是你们,我还是会选择解决方案(或者可能不是!)

awk'NR==FNR{a[++y]=$0;next}{b[++x]=$0}
END{z=x>y?x:y;而(++i纯溶液可以是:

exec 3<twofile
while read x; do read -u 3 y; echo $x $y; done <onefile

@fedorqui带有
paste
的默认分隔符是一个制表符。我不明白为什么在文件内部打印时,它会将第三列数字放在新行paste-d''file1 file2>file3中非常好。作为参考,
paste-d''file1 file2
file2
粘贴到
file1
(作为附加列)使用空格作为分隔符;
paste-d'\t'file1 file2
将粘贴一个选项卡作为分隔符。例如
paste-d'\t'file1.tsv file2.tsv>test.tsv
。回答很酷。你介意解释一下它是如何工作的吗?我不明白为什么它先是
a[NR]
,然后是
a[FNR]
awk 'NR==FNR{a[NR]=$0;next}{print a[FNR],$0}' file1 file2
awk 'NR==FNR{a[++y]=$0;next}{b[++x]=$0}
END{z=x>y?x:y;while(++i<=z){print a[i],b[i]}}' file1 file2
exec 3<twofile
while read x; do read -u 3 y; echo $x $y; done <onefile
cat >onefile <<XXX
1 1
2 3
3 4
XXX
cat >twofile <<XXX
6
7
9
XXX
1 1 6
2 3 7
3 4 9