Normalerweise Grep zeigt jede Übereinstimmung in einer separaten Zeile, wenn in der Befehlszeile ausgeführt. In den obigen Skripts verschwindet jedoch die neue Zeile, die jede Übereinstimmung trennt. Weiß jemand, wie die Newline erhalten werden kann?Verlieren von Newline nach dem Zuweisen von grep Ergebnis zu einer Shell-Variable
Antwort
Put in Anführungszeichen $ out:
#!/usr/local/bin/bash
out=`grep apache README`
echo "$out";
Sie verlieren es nicht in der Zuordnung, sondern im Echo. Sie können dies deutlich sehen, wenn Sie:
echo "${out}"
Sie werden einen ähnlichen Effekt mit dem folgenden Skript sehen:
x="Hello,
I
am
a
string
with
newlines"
echo "====="
echo ${x}
echo "====="
echo "${x}"
echo "====="
die Ausgänge:
=====
Hello, I am a string with newlines
=====
Hello,
I
am
a
string
with
newlines
=====
Und irrelevant für Ihre Frage Aber ich möchte es trotzdem erwähnen, ich bevorzuge das Konstrukt $() anstatt Backticks, nur um die Befehle zu verschachteln. So Ihre Skriptzeile wird:
out=$(grep apache README)
Jetzt, wo nicht anders aussehen kann (und es ist nicht), aber es macht möglich, komplexere Befehle wie:
lines_with_nine=$(grep $(expr 7 + 2) inputfile)
Ich wusste nicht, dass Sie das mit $() tun könnten ... lernen Sie die ganze Zeit etwas Neues Hier. – Tanj
Sie können Mathe ohne expr verwenden. Benutze einfach double-parens: $ ((7 + 2)) –
Eigentlich könnte ich das jetzt mit all meinen Antworten versuchen - füge ein (nicht immer total) relevantes Snippet für die Ausbildung des Schwarms hinzu :-) – paxdiablo
Variablen in der Bash Zitiert bewahrt die Leerzeichen .
Zum Beispiel:
#!/bin/bash
var1="A B C D"
echo $var1 # A B C D
echo "$var1" # A B C D
da Zeilenumbrüche sind Leerzeichen sie "entfernt" get
- 1. Context.User verlieren Rollen nach dem Zuweisen in Global.asax.Application_AuthenticateRequest
- 2. bash grep Newline
- 3. Zuweisen von Variablen aus Datei mit Zeichenfolgenliteral newline
- 4. Automatischer Abstand nach dem Ergebnis von fgets?
- 5. Excel vba Zuweisen von Zellenwert zu Variable aus Autofilter Ergebnis
- 6. grep von unten nach oben von einer Datei
- 7. SELECT-Ergebnis dem Feld-Symbol zuweisen
- 8. Grep von einer langen Linie
- 9. Konservenfarbe nach Paspeln Grep zu Grep
- 10. codeIgniter: Verlieren Sitzungsdaten nach dem Login
- 11. Zuweisen von Validatoren zu einer Schaltfläche
- 12. Zuweisen von console.log-Wert zu einer Variablen
- 13. Wie kann ich nach einer Anzahl von Pipes grep ('|')?
- 14. Farbe (von Leaflet CircleMarker) dem Wertebereich zuweisen
- 15. neue Linientrenner für jedes grep Ergebnis sh Skript
- 16. Zuordnung zu dem Ergebnis einer Funktionsvariablen ändert
- 17. bekommen einen Teil einer Zeile nach grep
- 18. Ändern der Sortierkriterien nach dem ersten Ergebnis
- 19. Zuweisen von Werteliste zu Benutzersteuerungseigenschaft
- 20. Zuweisen von Rollen zu Anwendungsbenutzern
- 21. Zuweisen von Pointer zu Singleton zu Objektfeld
- 22. Edittext Feld erlauben Benutzer Feld nach Knopf zu ändern oder bearbeiten und zuweisen Ergebnis zu Variable
- 23. Zuweisen von zwei Bereichen von separaten Blättern zu einer Variablen
- 24. Solr zeigt kein Ergebnis nach dem Indexieren von Tabellensätzen
- 25. Zuweisen von Punkten zu Behältern
- 26. clearing newline char von gtk.Textbuffer
- 27. AngularJS2 Verlieren Bindung nach Rohrfilter
- 28. Zu einer Gruppe von Zeilen die gleiche Sequenznummer zuweisen
- 29. wie grep verwenden, um entweder mit whitespace oder newline übereinzustimmen
- 30. IE6 Verlieren von Querystring
möglich Duplikat [I nur eine Variable zugewiesen, aber echo $ variable zeigt etwas anderes] (http: // Stackoverflow .com/questions/29378566/i-nur-zugewiesen-eine-Variable-aber-Echo-Variable-zeigt-etwas-sonst-) –
Es ist mehr ein Duplikat von [Capturing mehrere Zeilenausgabe zu einer Bash-Variable] (http: // stackoverflow.com/questions/613572/capturing-multiple-line-output-to-a-bash-variable) – Renato