Frage

Ich verwende grep, um ein Muster in einer Datei zu durchsuchen, die in einer Variablen enthalten ist

Code hier:

result=`grep "$pattern" $file`
echo $result

Ergebnis:A) einige Wörter, B) einige Zeilen, C) einige Zahlen

Druckergebnis in einer Zeile.Ich hätte gerne ein Ergebnis für Zeile a

Wie:

A) somewords
B) somelines
C) somenumbers

Wie kann ich?

Danke

War es hilfreich?

Lösung

Zitieren Sie einfach Ihre $result Variable und die Zeilenumbrüche bleiben erhalten:

result=$(grep "$pattern" $file)
echo "$result"

Der Grund dafür ist, dass, wenn Sie in der Bash etwas in doppelte Anführungszeichen setzen, alles in diesen Anführungszeichen als ein einzelnes Wort behandelt wird.Dies bedeutet, dass es nicht unterliegt Wortaufteilung.Siehe auch: http://mywiki.wooledge.org/WordSplitting

Effektiv, wenn Sie es verwenden $result, wird es wie folgt erweitert (da die Zeilenumbrüche als Trennzeichen behandelt werden):

echo A) somewords B) somelines C) somenumbers

Wenn Sie verwenden "$result" und vermeiden Sie die Wortaufteilung, es wird wie folgt erweitert:

echo "A) somewords
B) somelines
C) somenumbers"

Zusätzliche Anmerkung:verwenden $(...) anstelle von Backticks verbessert die Lesbarkeit und ist außerdem tragbarer.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top