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

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

我有 2 个包含numbers_ID、status、descrpation 的文件我想根据数字加入这两个文件

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 

答案1

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,bash或中zsh,您还可以“即时”进行排序:

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

相关内容