Shell
根據第一列的兩個文件的交集
我在文件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
你想要
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
(像往常一樣,檢查手冊頁是否有陷阱。)