Join

使用 comm cmd 在一行中列印常用文本?

  • August 3, 2018

我有 2 個包含 numbers_ID、status、descration 的文件我想根據數字加入這兩個文件

number_123, status1, status2 

我的文件1:

number_123,this car is under maintenance  
number_345,this car checked is done
number_356,this car is under main 

我的文件2:

number_123,hold  
number_345,done 

我只需要將兩個文件中的現有號碼加入為:

number_123,hold,this car is under maintenance    
number_345,done,this car checked is done 

我使用 comm file1 file2 來查找公共數字,但文件看起來像:

number_123,this car is under maintenance 
number_123,hold 
number_345,this car checked is done
number_345,done

如何將其列印在一行中

number_123,hold,this car is under maintenance    
number_345,done,this car checked is done 

comm實用程序用於比較文件之間的整行。你想要做的是加入一個特定的領域。

$ join -t, file2 file1
number_123,hold,this car is under maintenance
number_345,done,this car checked is done

這假設兩個文件都在連接欄位(每個文件中的第一個逗號分隔列)上排序。

如果文件未排序,您可以使用預排序它們

sort -t, -k1,1 -o file1 file1
sort -t, -k1,1 -o file2 file2

ksh93,bashzsh中,您也可以“即時”進行排序:

join -t, <( sort -t, -k1,1 file2 ) <( sort -t, -k1,1 file1 )

引用自:https://unix.stackexchange.com/questions/460137