Wie können wir das Trennzeichen ändern, das grep verwendet?
Ich denke, standardmäßig verwendet grep \n
als Trennzeichen.
linux
shell-script
grep
Studiohack
quelle
quelle
$/
) und awk (RS
) angeben . Oder du könntest so etwas tunecho "$var" | sed 's/<delimiter>/\n/' | grep <pattern>
. Viele, viele Antworten, je nachdem, was Ihr eigentliches Problem ist.Antworten:
Wenn Sie sich nur um die Ausgabe kümmern,
tr
könnte dies für Sie funktionieren:quelle
echo $my_var | tr @ '\n' | grep blahblah
$my var
in Anführungszeichen setzen, um Leerzeichen und Zeilenumbrüche beizubehaltenecho "$my_var" | ...
.agrep
von der University of Arizona können Sie das Trennzeichen festlegen. Es ist kein Ersatz für grep. Es verwendet einen anderen Algorithmus (ungefähres Grep, kann mit Fehlern übereinstimmen) und hat eine andere Mustersyntax. Aber es ist ein praktisches Werkzeug.Leider denke ich, dass aufgrund von Lizenzproblemen mehrere ähnliche Projekte aufgerufen
agrep
wurden und nicht alle kompatibel sind. Aber ich denke, in allen Versionen können Sie ein Trennzeichen festlegen.quelle
quelle
d="${1}"
anstatt nurd="$1"
? (2) Sie müssen Ihre Warnung erweitern: Wenn dies mit mehreren Dateien verwendet wird, haben Sie auch ein Problem, wenn einer der Dateinamen "@" enthält. (3) (Nit pick) Ein echter "grep" -Ersatz / Emulator würde auch mit Null-Dateiargumenten funktionieren.Ersetzen Sie das Nulltrennzeichen ('@') durch eine neue Zeile (\ n) vor grep:
quelle
Wie ist das ? Irgendeine Verwendung?
Stellen Sie '@' auf das ein, was Ihren Anforderungen entspricht.
quelle