例如:
文件一:
Tom:black
Lily:pink
文件b:
Tom:big
Kate:small
结果是:
join -t: a1 a b
得到:
Tom:black:big
Lily:pink
但我想要的是:
Tom:black:big
Lily::pink
即最后一行的冒号丢失了,有什么想法吗?
答案1
我认为您希望字段处于一致的位置。如果是这样,那么其中一个只需调用一次即可工作,join
而无需sed
:
$ join -t: -a1 -o 1.1,1.2,2.2 a b
Tom:black:big
Lily:pink:
$ join -t: -a1 -o 1.1,2.2,1.2 a b
Tom:big:black
Lily::pink
答案2
此行为符合以下预期man join
:
-a FILENUM
print unpairable lines coming from file FILENUM, where FILENUM is 1 or 2, corresponding to FILE1 or FILE2
你可以像这样通过两次传递来完成:
join -t: a b && join -t: -v1 a b|sed 's/:/::/'
或类似的规定。