使用grep查找带括号的字符串

Gui*_*ste 7 unix grep

我有一些grep命令的问题.我的文件夹中有以下两个文件:

TEST.DAT:

fdf
bla(fd_bla_bla) =&
bdf bla
Run Code Online (Sandbox Code Playgroud)

test2.dat

fd
fd
fij
d
bla(fdf)

fdjk
bla
Run Code Online (Sandbox Code Playgroud)

现在我用它搜索带括号的bla

grep 'bla(*)' *
Run Code Online (Sandbox Code Playgroud)

但它只是给了我第一个文件的条目......你知道为什么吗?

the*_*eye 10

你需要正则表达式才能进行匹配.

egrep "bla\(.*\)" *.dat
Run Code Online (Sandbox Code Playgroud)

会给出正确的结果.


Ken*_*ent 5

你grep 'bla(*)' *不会工作,因为它会寻找bla)或bla((((((((), 0 或多个,(然后bla后面跟着单个)

做就是了:

grep '\bbla(' *.dat
Run Code Online (Sandbox Code Playgroud)
  • 默认情况下 grep 使用 BRE,因此(在模式中将匹配文字(
  • (单词边界\b) 将使 grep 匹配foo bla(..)and bla(xx),但不匹配foobla(xxx)。