根据第一列求两个文件的交集

根据第一列求两个文件的交集

我在文件A中有两个文件,另一个文件B中有sequence_numbers,有很多列,第一列是序列号,我想获取一个文件,其中包含B中的所有行以及序列号A我怎样才能实现这个目标?谢谢

就像文件A一样

1
3
8
9
20

文件B

1 kfjk 3243424
2 fkdkf 23543592
3 iefjk 21493402
7 dlafdl 23435231
8 kfkdlkf 309834

答案1

我猜你想要join (1)

对于具有相同连接字段的每对输入行,将一行写入标准输出。默认连接字段是第一个,由空格分隔。当 FILE1 或 FILE2(不是两者)为 - 时,读取标准输入。

[0 1075 12:50:10] ~/temp/sx % join A B
1 kfjk 3243424
3 iefjk 21493402
8 kfkdlkf 309834
join: file 1 is not in sorted order

好的,显然你需要将其与sort (1)按 alpha 值排序(不是数值,所以 20 < 3)

join <(sort A) <(sort B)对我有用,但这看起来很奇怪,可能是 zsh 扩展。这样做没有坏处

sort A > A.tmp; sort B > B.tmp; join A.tmp B.tmp

(像往常一样,检查手册页是否存在陷阱。)

相关内容