【发布时间】:2020-06-18 12:00:33
【问题描述】:
我需要删除文件中包含少于 4 个唯一字符的所有字符串
输入:
hello
cabby
pabba
lokka
lappa
coool
apple
预期输出:
hello
cabby
lokka
apple
我试图想出一个正则表达式来做到这一点,但我想不出它怎么可能。
我确实找到了一个看起来很有希望的sed 命令,它删除了所有重复的字符。但是,我不确定如何编写 sed 来测试程序是否返回 4 个字符,如果返回,则匹配原始字符串。
sed ':1;s/\(\(.\).*\)\2/\1/g;t'
【问题讨论】:
-
我怀疑你可以用
sed做到这一点。即使在grep中使用 PCRE 正则表达式,纯正则表达式解决方案看起来也很笨拙,请参阅grep -vP '^(?:(.)\1*(?:(?!\1)(.)(?:\1|\2)*(?:(?!\1|\2|3)(.)(?:\1|\2|\3)*)?)?)?$' file(demo)。使用awk。