正则表达式 - 仅搜索字符对

正则表达式 - 仅搜索字符对

我有以下数据,我的意思是仅提取那些仅包含“bb”的行。不是“b”或“bbb”或其他任何东西,只是“bb”。

abb
abbb
aabbcc
aabab
abbbbc

现在,当我使用以下命令组合时:

cat file1 | grep "bb[^b]

我得到的输出是示例文件中的所有行:

abb
abbb
aabbcc
aabab
abbbbc

我想要的预期是 -:(仅包含“bb”的行)

abb
aabbcc

可以实现此目的的正则表达式是什么?

阿巴布无效。我正在寻找仅包含的行BB并且没有其他模式。该行将仅包含两个连续的并且根本没有其他 b 字符。

答案1

我想最直接的方法是:

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

顺便说一句,对于这样的命令grep接受文件名参数,这样做效率更高

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

或者

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

(如果不支持文件参数,后者也可以工作)

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

而且往往更加灵活。

答案2

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

或者

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

即:搜索bb前面是行首或不同于 的字符b,后面是不同于b行尾的字符的出现。

相关内容