我有一个文件“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命令?
答案 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