样本输入:
123123123 aaaaa abababab aaab baaa abcde1abcde1
aaaaaa 1212121212
预期产量:
123123123
abababab
abcde1abcde1
aaaaaa
这是我试过的:
egrep '(.)\1\1{2,4}' test
假设你的grep
版本支持-o
和-w
选项
-o, - only-matching仅打印匹配行的匹配(非空)部分,每个此类部分位于单独的输出行上。
-w, - word-regexp仅选择包含构成整个单词的匹配项的行。测试是匹配的子字符串必须位于行的开头,或者前面是非单词构成字符。同样,它必须位于行的末尾或后跟非单词构成字符。单词构成字符是字母,数字和下划线。
据我所知,egrep
已被弃用,而grep -E
则相同
添加-o
选项到OP的尝试,以及-w
以避免匹配的单词部分
$ grep -owE '(.)\1\1{2,4}' ip.txt
aaaaa
aaaaaa
改变正则表达式
$ grep -owE '(.{1,})\1{1,3}' ip.txt
123123123
abababab
abcde1abcde1
aaaaaa
.{1,}
要重复的一个或多个字符\1{1,3}
最多4次,所以我们需要再次匹配至少一次,最多再次3次