Regular-Expression
正則表達式 - 僅搜尋字元對
我有以下數據,我的意思是僅提取那些僅包含“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
或行尾的字元的出現。