按第一列匹配 2 个不同的文件

按第一列匹配 2 个不同的文件

所以我有两个不同的文件。

文件1.txt是:

abcdefjeiireiiioe:data:otherdata  
rijirjeiwrieeoooe:datamore:otherdatamore  

文件2.txt是:

abcdefjeiireiiioe:data:otherotherdata  
rijirjeiwrieeoooe:datamore:otherotherdatamore      
*other random lines which do not occur in file1.txt also and are not needed

我怎样才能将它们打印在同一行上,以便它们像:

abcdefjeiireiiioe:data:otherdata:data:otherotherdata

答案1

我假设您也希望合并第二行。您可以使用join

join -t : file1 file2

这会解析file1file2用作:分隔符,并合并第一个字段匹配的行。默认情况下,不匹配的行将被忽略并且不会出现在输出中。

输入文件需要在连接字段上排序;如果不是,您可以预处理它们:

join -t : <(sort -k 1,1 -t : file1) <(sort -k 1,1 -t : file2)

或者您可以尝试忽略排序检查:

join -t : --nocheck-order file1 file2

相关内容