如何在连接实用程序中打印所有字段的分隔符?

如何在连接实用程序中打印所有字段的分隔符?

例如:

文件一:

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/:/::/'

或类似的规定。

相关内容