粘贴两个数据文件时排除列

时间:2014-06-01 07:57:59

标签: bash paste

我有一个文件“dat1.txt”,就像:

0 5.71159e-01
1 1.92632e-01
2 -4.73603e-01

和另一个文件“dat2.txt”:

0 5.19105e-01
1 2.29702e-01
2 -3.05675e-01

写入将这两个文件合并为一个我使用的文件

paste dat1.txt dat2.txt > data.txt

但是我不希望输出文件中第二个文件的第一列。如何修改unix命令?

4 个答案:

答案 0 :(得分:2)

如果您的文件在第1列按顺序排列,您可以尝试:

join dat[12].txt

答案 1 :(得分:2)

你可以在awk中尝试这个,

$ awk 'FNR==NR {a[FNR]=$0;next} {print a[FNR],$2}' data1.txt data2.txt
0 5.71159e-01 5.19105e-01
1 1.92632e-01 2.29702e-01
2 -4.73603e-01 -3.05675e-01

答案 2 :(得分:1)

使用cut删除第一列,然后导管到paste

 cut -d' ' -f 1 --complement dat2.txt  | paste dat1.txt - > data.txt

请注意,过去的ecommand中的-表示从stdin读取而不是第二个文件。

如果OSX上cut被破坏,awk可能会有效。

 awk '{for (i=2; i<=NF; i++) print $i}'  dat2.txt  | paste dat1.txt - > data.txt

答案 3 :(得分:0)

paste  dat1.txt <(cut -d" " -f2- dat2.txt)

使用cut删除第1列,并使用流程替换在paste中使用其输出

输出:

0 5.71159e-01   5.19105e-01
1 1.92632e-01   2.29702e-01
2 -4.73603e-01  -3.05675e-01