删除所有包含重复字母的行

删除所有包含重复字母的行

我试图找到关于这个主题的现有主题,我发现了一些东西,但这不是我正在寻找的 100% 的东西,而且我的互联网连接在过去几天很糟糕,所以我需要停止搜索并发布一个新线程。 。

所以我的问题是我有一个包含很多行(超过 50000 行)的 .txt 文件,每行都有 5 个字母的字符串,如下所示:

KKIUB
SDCVG
KJUTT
NGTHH
WWLEE
XGHTP
NJFRT
PPSFF
ZZZLP
XDRFX
JJJJJ
KIEYW
...

我希望删除文件中包含两个(或更多)相同字母的所有行。重复项的顺序并不重要,因此必须删除在一行中两次包含某个字母的所有行。请注意,有时可能有 5 个相同的字母,有时有 3 个相同的字母,有时只有 2 个相同的字母 + 彼此不接近,例如“GOHIG”。

KKIUB ---> delete
SDCVG ---> stays
KJUTT ---> delete
NGTHH ---> delete
WWLEE ---> delete
XGHTP ---> stays
NJFRT ---> stays
PPSFF ---> delete
ZZZLP ---> delete
XDRFX ---> delete
JJJJJ ---> delete
KIEYW ---> stays

我正在尝试使用sed功能,但未能取得良好的结果。我还想将其导出到另一个 .txt 文件中。有什么帮助吗?

答案1

sed -e '/\(.\).*\1/d' yourfile > youroutputfile

答案2

您可以使用 grep

grep -vE "(.).*\1" input.txt > output.txt

例如

% cat input.txt 
KKIUB
SDCVG
KJUTT
NGTHH
WWLEE
XGHTP
NJFRT
PPSFF
ZZZLP
XDRFX
JJJJJ
KIEYW

% grep -vE "(.).*\1" input.txt > output.txt

% cat output.txt 
SDCVG
XGHTP
NJFRT
KIEYW

相关内容