Terminal - Macbook GREP-Abfrage

Terminal - Macbook GREP-Abfrage

Ich verwende erfolgreich den folgenden Terminalbefehl, um bestimmten Text in meiner sehr großen CSV-Datei zu finden und eine separate CSV-Datei als Ausgabe zu erstellen:

grep "text" filename.csv > outputfile.csv

Gibt es eine Möglichkeit, mit einem ähnlichen Befehl nach mehreren verschiedenen Texten zu suchen und diese in derselben Ausgabedatei zu speichern?

Antwort1

Sie können nach mehreren Mustern suchen mit -e:

grep -e text1 -e text2 filename.csv > outputfile.csv

Getestet mit GNU grep, FreeBSD grep und busybox grep Implementierungen, auch spezifiziert in POSIXDies -ewird in der Manpage von GNU grep erklärt:

   -e PATTERN, --regexp=PATTERN
          Use PATTERN as the pattern.  If this option is used
          multiple times or is combined with the -f (--file)
          option, search for all patterns given.  This option can
          be used to protect a pattern beginning with "-".

Antwort2

Im Prinzip könnten Sie in Ihrem regulären Ausdruck eine Alternative im „ODER“-Stil verwenden:

grep "text1\|text2" filename.csv > outputfile.csv

oder

grep -E "text1|text2" filename.csv > outputfile.csv

Die verfügbare Syntax hängt etwas davon ab, welche Version grepSie installiert haben (das Obige funktioniert auf jeden Fall in GNU grep).

Antwort3

Wenn Sie nach anderen Zeichenfolgen suchen möchten, können Sie egrepoder verwenden grep -E:

egrep "text|string|word|" filename.csv > outputfile.csv

grep -E "seal|walrus|otter" filename.csv > outputfile.csv

Diese geben Zeilen aus, die eine dieser Zeichenfolgen enthalten. Sie können sie auch mit anderen Optionen kombinieren, wie zum Beispiel:

egrep -v "text|string|word|" filename.csv > outputfile.csv

Dadurch werden Zeilen ausgedruckt, die keine dieser Zeichenfolgen enthalten.

verwandte Informationen