2017-04-21 3 views
0

Ich bin nicht in der Lage, grep unter String grep.Problem mit grep

Unten ist der Ausgang String

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 

Aber wenn ich unten mit dem Befehl grep versuchen

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

Ich erhalte null ausgegeben. Ich habe versucht, Zitate auch ohne Erfolg zu verwenden.

Antwort

0

Try Folgen,

Wenn Sie in grep Apostroph verwenden möchten, haben Sie Ihre Suche Zeichenfolge mit doppelten Anführungszeichen zu umgeben.

Verwenden \ für /, [ und ]

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

Verwenden -F mit grep:

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

-F ist für --fixed-strings. Dann ignoriert grep die Zeichen wie [] als Regex.

0

Sie müssen doppelte Anführungszeichen für grep Muster verwenden und den Fall eckigen Klammern entkommen müssen, da sie wie warten unter

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

Aber Bereiche in regex angeben sollen! Das ist unnötige Verwendung von grep, wo Sie mit nur sed wie folgt fertig sein könnten:

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