从多个文件中删除重复的行

时间:2015-12-27 08:50:18

标签: linux bash

我想将文件“text.txt”与特殊目录中的其他文件进行比较,并仅在文件“text.txt”中删除重复的字符串。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

假设文件位于“目标”目录

perl -ne 'chomp;push (@x,$_);END{$ENV{R}= "^(".join("|",@x).")";system qq(perl -i.bak -pe "if (/\x0a/){s/$ENV{R}\x0a//g}else{s/$ENV{R}//g};" target/*)}' test.txt

Becareful!代码未经过全面测试,在执行前备份文件

答案 1 :(得分:1)

如果行的顺序不重要(bash):

comm -23 <( <text.txt sort ) <( cat directory/* | sort ) > text.txt.uniques

如果订单很重要,可以使用nl标记这些行,然后必须使用join来查找相同的行,然后输出sort -ncut 1}}摆脱数字。