遇到grep问题

时间:2017-04-21 10:44:52

标签: linux bash grep

我无法使用grep在字符串下面进行grep。

以下是具有字符串

的输出
omnidb -session 2017/03/31-918  -detail | sed -e 's/ //g' 

Objectname:bbtsrvvie4.cone.bombardier.com:/C'bbtsrvvie4.cone.bombardier.com[/C]'

Objecttype:WinFS

Objectstatus:Completed

Started:FriMar3122:00:132017

Finished:FriMar3123:06:582017

Objectsize:23519123KB

Backuptype:Full

Protection:Protectedfor90days

但是当我尝试使用以下命令grep时

omnidb -session 2017/03/31-918  -detail | sed -e 's/ //g' | grep bbtsrvvie4.cone.bombardier.com:/C'bbtsrvvie4.cone.bombardier.com[/C]'

我得到空输出。我试图使用引号也没有成功。

3 个答案:

答案 0 :(得分:0)

尝试关注,

如果您想在grep中使用单引号,则必须用双引号括住搜索字符串。

使用\ /[]

omnidb -session 2017/03/31-918  -detail | sed -e 's/ //g' | grep "Objectname:bbtsrvvie4.cone.bombardier.com:\/C'bbtsrvvie4.cone.bombardier.com\[\/C\]'"

答案 1 :(得分:0)

-Fgrep

一起使用
omnidb -session 2017/03/31-918  -detail | sed -e 's/ //g' | grep -F "bbtsrvvie4.cone.bombardier.com:/C'bbtsrvvie4.cone.bombardier.com[/C]'"

-F适用于--fixed-strings。然后grep会忽略像[]这样的字符作为正则表达式。

答案 2 :(得分:0)

您需要对grep模式使用双引号,并且需要转义大小写方括号,因为它们用于指定正则表达式中的范围,如下所示

omnidb -session 2017/03/31-918  -detail | sed -e 's/ //g' | grep 
 "bbtsrvvie4.cone.bombardier.com:/C'bbtsrvvie4.cone.bombardier.com\[/C\]'"

但是等等!这是不必要的使用grep,你可以完成sed,如下所示:

omnidb -session 2017/03/31-918  -detail | 
sed -ne "s/ //g;/bbtsrvvie4.cone.bombardier.com:\/C'bbtsrvvie4.cone.bombardier.com\[\/C\]'/p"