我有两个带有制表符分隔值的文件,如下所示:
文件 1:
A 1
B 3
C 1
D 4
Run Code Online (Sandbox Code Playgroud)
文件2:
E 1
B 3
C 2
A 9
Run Code Online (Sandbox Code Playgroud)
我想在文件 1 和 2 之间找到第 1 列中的字符串相同的行,然后获取相应的值。所需的输出是一个看起来像这样的文件:
B 3 3
C 1 2
A 1 9
Run Code Online (Sandbox Code Playgroud)
这可以用 Unix one-liner 来完成吗?
jau*_*ume 10
join如果结果中的行排序无关紧要,GNU coreutils 包含的命令完全符合您的要求:
join <(sort file1) <(sort file2)
A 1 9
B 3 3
C 1 2
Run Code Online (Sandbox Code Playgroud)
如果您想要返回标签,请执行以下操作:
join <(sort file1) <(sort file2) | tr ' ' '\t'
A 1 9
B 3 3
C 1 2
Run Code Online (Sandbox Code Playgroud)
或者使用t选项join.
(<()又名进程替换,需要 ksh93(功能起源于)、bash 或 zsh)