
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 -e
wird 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 grep
Sie installiert haben (das Obige funktioniert auf jeden Fall in GNU grep).
Antwort3
Wenn Sie nach anderen Zeichenfolgen suchen möchten, können Sie egrep
oder 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.