Regular-Expression

正則表達式 - 僅搜尋字元對

  • November 24, 2014

我有以下數據,我的意思是僅提取那些僅包含“bb”的行。不是“b”或“bbb”或其他任何東西,只是“bb”。

abb
abbb
aabbcc
aabab
abbbbc

現在,當我使用以下命令組合時-:

cat file1 | grep "bb[^b]

我將輸出作為範例文件中的所有行 - :

abb
abbb
aabbcc
aabab
abbbbc

我想要的是-:(僅包含“bb”的行)

abb
aabbcc

可以實現此目的的正則表達式是什麼?

abbbabb無效。我正在尋找僅包含bb而沒有其他b模式的行。該行將僅包含兩個連續的b並且根本不包含其他 b 字元。

我想最直接的方法是:

grep '^[^b]*bb[^b]*$' file1

順便說一句,對於像grep這樣接受文件名參數的命令,這樣做更有效

grep '^[^b]*bb[^b]*$' file1

或者

grep '^[^b]*bb[^b]*$' < file1

(如果不支持文件參數,後者也可以工作)

cat file1 | grep '^[^b]*bb[^b]*$'

而且通常更靈活。

grep '\(^\|[^b]\)bb\([^b]\|$\)'

或者

grep -E '(^|[^b])bb([^b]|$)'

即:搜尋出現bb在行首或不同於 的字元之前b,然後是不同於b或行尾的字元的出現。

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