我有2个输入文件
文件1
A 0.01
B 0.09
D 0.05
F 0.08
file2的
A 0.03
C 0.01
D 0.04
E 0.09
我想要的输出是
A 0.01 0.03 1
B 0.09 NULL 1
C NULL 0.01 1
D 0.05 0.04 1
E NULL 0.09 1
F 0.08 NULL 1
这是我到目前为止所做的
join -t $'\t' -a 1 -a 2 -1 1 -2 1 -e NULL -o 0,1.2,2.2,'1' file1 file2
给了我
join: invalid field specifier: `1'
答案 0 :(得分:2)
我不会使用连接,有数以万计的工具可以帮助你,例如:
sed 's/$/\t1/g'
答案 1 :(得分:1)
在Perl,Python或Ruby中可以有更优雅,更灵活的解决方案。根据您的要求,下面显示了Bash解决方案。
-d
的{{1}})。cut
是否符合您的要求。因为,您可能会获得具有相同第一个元素的行(例如,两行包含sed 's/$/\t1/g'
和A
)。您的示例输出将查找具有每个键的聚合值的唯一列。<强>执行:强>
D
<强>代码:强>
babil@host:~$ cat file1
A 0.01
B 0.09
D 0.05
F 0.08
babil@host:~$ cat file2
A 0.03
C 0.01
D 0.04
E 0.09
babil@host:~$ ./t.sh
A 0.01 0.03 1
B 0.09 NULL 1
C NULL 0.01 1
D 0.05 0.04 1
E NULL 0.09 1
F 0.08 NULL 1
babil@norbit:~$