如何从两个文本文件中删除相同的行?

如何从两个文本文件中删除相同的行?

输入(两个文本文件):

> cat foo.txt 
alpha
beta
delta
> 

> cat bar.txt 
gamma
epsilon
beta
> 

输出(删除两个文件中出现的行):

> SOMEMAGIC foo.txt < bar.txt > foofixed.txt
> cat foofixed.txt
alpha
delta
> 

> SOMEMAGIC bar.txt < foo.txt > barfixed.txt
> cat barfixed.txt
gamma
epsilon
> 

问题: 怎么做?

答案1

您可以使用comm它,但它需要对输入进行排序。

comm -23 <(sort foo.txt) <(sort bar.txt) > foofixed.txt
comm -13 <(sort foo.txt) <(sort bar.txt) > barfixed.txt

-23意思是“仅显示文件 1 特有的行”。

相关内容