Drucken Sie die Awk-Funktion jedes Mal in eine neue Zeile aus

Drucken Sie die Awk-Funktion jedes Mal in eine neue Zeile aus

Ein Teil meines Codes ist wie folgt:

output=$(cat databaselog | awk '{print $9,$1,$2,$6}' )
echo $output >> savedfile

Die Ausgabe sieht ungefähr so ​​aus und wird in einer neuen Datei mit dem Namen savedfile gespeichert.

name1 date1 id1 ip1 name2 date2 id2 ip2 name3 date3 id3 ip3

Aber ich möchte, dass es so ist:

name1 date1 id1 ip1
name2 date2 id2 ip2
name3 date3 id3 ip3

ich weiß, es ist ganz einfach, aber ich finde nicht den richtigen Weg, es zu machen. Bitte helfen Sie mir, danke!

Antwort1

Sie müssen „ $outputas“ doppelt in Anführungszeichen setzen "$output", wenn Sie es wiedergeben. Andernfalls werden in der Ausgabe Zeilenumbrüche und andere Leerzeichen in reine Leerzeichen umgewandelt.

Es empfiehlt sich auch, die Befehlsersetzung in doppelte Anführungszeichen zu setzen. output="$(...)"statt nuroutput=$(...)

z.B

output="$( cat databaselog | awk '{print $9,$1,$2,$6}' )"
echo >> savedfile
echo "$output" >> savedfile

Besser wäre jedoch Folgendes:

echo >> savedfile
awk '{print $9,$1,$2,$6}' databaselog >> savedfile

verwandte Informationen