Grep 所有以相同子字符串开头和结尾的字符串

Grep 所有以相同子字符串开头和结尾的字符串

我需要 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,})

相关内容