2017-02-20 2 views
0

grep werden die Zeilen in einer Datei zurück, die einem bestimmten Muster entsprechen:Wie kann ich die Definition von "Linie" in Grep ändern?

grep pattern file

Wird durch Datei suchen und zurückgeben alle Linien passende Muster.

Mein Code-Basis hat viele mehrzeiligen Aussagen, wie:

int x = somefunc(a, 
       b, 
       10, 
       someclass(10), 
       foo, 
       bar); 

Ich möchte die gesamte Anweisung in der Lage meine Datei grep und zurück, nicht nur die Linie. Zum Beispiel, wenn ich alle Anrufe somefunc mag, dass die foo verwenden, könnte ich tun:

grep -e 'somefunc.*foo' filename 

und den gesamten Funktionsaufruf erhalten, die ich Rohr für die weitere Verarbeitung in zu einem anderen Programm kann:

grep -e 'somefunc.*foo' filename | grep -v bar 

Im Wesentlichen möchte ich grep sagen, dass meine Zeilen mit ; und nicht mit EOL enden.

Ich kann die -C, -A oder -B Schalter nicht verwenden, da ich nicht immer weiß, wie viele Zeilen in der Anweisung sein werden.

int x = somefunc(a, b, 
       10, someclass(10), 
       foo, bar); 

Gibt es eine Möglichkeit, dies mit grep oder einem anderen gemeinsamen Tool zu tun: Zum Beispiel könnte das obige Beispiel wie folgt geschrieben werden?

+0

Hallo Nathan, würdest du bitte irgendeine der folgenden Antworten akzeptieren, die am besten zu deiner Anforderung passen? –

+0

Ich habe es versucht, aber keiner von ihnen war wirklich zufriedenstellend –

Antwort

Verwandte Themen