ich diesen Befehl verwenden, 2 Zeilen aus einer Textdatei zu extrahieren:Konnte die Ausgabe des Befehls sed oder awk nicht Variablen zugewiesen werden? drucken sie nur
cat file1 | grep -A7 SECTIONA | grep -E 'Address|BackupAddress'
Dies erzeugt die beiden Linien unter:
Address host1 port_1 Address
BackupAddress host2 port_2 BackupAddress
Ich brauche zuweisen (nicht drucken), um den Host und Port-Spalten zu verschiedenen globalen Variablen, die später im Skript verwendet werden.
hosta="host1"
porta="port_1"
hostb="host2"
portb="port_2"
Ein Mitglied schlug vor, ich benutze dieses und ich erhalte die gewünschte Ausgabe, aber ich kann nicht die Variablen in der aktuellen Shell verwenden? Wenn ich versuche, sie zu drucken oder zu verwenden, erscheinen sie leer. Ich habe auch eine awk Lösung, um die gewünschte Ausgabe zu erhalten, aber sowohl sed als auch awk Befehle drucken nur die oben genannten und erstellen nicht die Variablen?
sed -n 's/^Address *\([^ ]\+\) *\([^ ]\+\).*/hosta="\1"\nporta="\2"/p;
s/^BackupAddress *\([^ ]\+\) *\([^ ]\+\).*/hostb="\1"\nportb="\2"/p' file1
Ich kann all dies umgehen, indem Sie den sed und awk in 4 Abschnitte zu brechen und die gleiche Abfrage 4mal laufen, aber es muss einen besseren Weg geben. Ich kann zum Beispiel so tun:
hosta=`cat file | sed/or/awk command`
porta=`cat file | sed/or/awk command`
hostb=`cat file | sed/or/awk command`
portb=`cat file | sed/or/awk command`
Wenn ich die Abfrage mit awk oder sed Befehl tun, um den gewünschten Ausgang sie Variablen zugewiesen bekommen zu bekommen, und ich kann die Variablen drucken oder zur Verwendung als Ich mag; aber ich möchte die Abfrage nicht 4 Mal ausführen.
Kann mir jemand bitte helfen
ja Inian 2 Zeilen und 4 Variablen in diesem Fall – theuniverseisflat
Meine Frage war, ob dies der Fall _all_ die Zeit sein könnte? nur zwei Zeilen (oder) kann die Anzahl variieren und _exactly_ 4 Variablen? Eine allgemeinere Lösung kann auf diese Weise erreicht werden. – Inian
Ja, das ist immer der Fall. Die Hostadresse und die Portlinien sind in allen von uns verwendeten Dateien generisch. So gibt es zwei Zeilen, die ich aus den Dateien grep und sie werden immer 4 Variablen enthalten. Hoffe das beantwortet deine Frage – theuniverseisflat