我试图找到关于这个主题的现有主题,我发现了一些东西,但这不是我正在寻找的 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