Bash

grep 以相同子字元串開頭和結尾的所有字元串

  • October 18, 2022

我需要 grep 所有以至少 4 個字母的相同子字元串開頭和結尾的行。子字元串不能重疊。

所以想像我們有輸入:

ABCDOOOPABCD
BBBBOLPOKBBBB
ACLMDJKAC
12345---12345
ABCD

那麼輸出應該是:

ABCDOOOPABCD
BBBBBOLPOKBBBBB
12345---12345

grep與基本正則表達式一起使用:

grep -x '\(.\{4,\}\).*\1' file

grep與擴展正則表達式 ( ) 一起使用-E

grep -Ex '(.{4,}).*\1' file

-x僅對全行匹配使用選項。

正則表達式的解釋:

  • (.{4,})一組至少 4 個字元
  • .*從 0 到無限個字元
  • \1對第一個擷取的組的反向引用(在這種情況下(.{4,})

引用自:https://unix.stackexchange.com/questions/721425