So geben Sie mehrere zu ignorierende Zeichenfolgen an (Befehl grep)

0

Ich verwende grep, um Verzeichnisse herauszufiltern, an denen ich nicht interessiert bin:

svn stat | grep -v data/charts | grep -v lib/model | grep -v web/pics

Es scheint ein bisschen "hacky". Gibt es eine bessere Möglichkeit, mehr als eine zu ignorierende Zeichenfolge anzugeben, damit ich nicht mehrere grep-Befehle verketten muss?

morpheous
quelle

Antworten:

2

Du kannst tun svn stat | grep -vE 'data/charts|lib/model|web/pics'

Das könnte Sie auch interessieren grep -x. ack könnte ein weiteres Werkzeug von Interesse für Sie sein.

Daenyth
quelle
Dies ist der Befehl, der für mich funktioniert
morpheous
2

Sie können die Disjunktion mit grep verwenden. Es ist das Pipe-Symbol wie in vielen regulären Ausdrücken, aber Sie müssen es maskieren, da bash es als tatsächliche Pipe interpretiert. Versuche dies:

svn stat | grep -v data/charts\|lib/model\|web/pics
matthias krull
quelle
2

Oder verwenden Sie grep -f und fügen Sie die Liste der Muster in eine Datei ein. (Das ist natürlich am bequemsten, wenn die Liste der Dinge ziemlich konstant ist.) Grep -vf funktioniert einwandfrei und kehrt den Sinn der Übereinstimmung genau wie reguläres grep -v um. Stellen Sie nur sicher, dass die Datei keine leeren Zeilen mit Mustern enthält, da diese mit allen übereinstimmen!

Jenn D.
quelle