我需要 grep 所有以至少 4 个字母的相同子字符串开头和结尾的行。子串不能重叠。
想象一下我们有输入:
ABCDOOOPABCD
BBBBOLPOKBBBB
ACLMDJKAC
12345---12345
ABCD
那么输出应该是:
ABCDOOOPABCD
BBBBBOLPOKBBBBB
12345---12345
答案1
grep
与基本正则表达式一起使用:
grep -x '\(.\{4,\}\).*\1' file
grep
与扩展正则表达式 ( ) 一起使用-E
:
grep -Ex '(.{4,}).*\1' file
仅使用-x
全行匹配选项。
正则表达式的解释:
(.{4,})
一组至少 4 个字符.*
从 0 到无限个字符\1
对第一个捕获组的反向引用(在本例中(.{4,})
)