Imprima la función awk en una nueva línea cada vez

Imprima la función awk en una nueva línea cada vez

parte de mi código es el siguiente:

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

El resultado será algo como esto, guardado en un nuevo archivo llamado savefile

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

Pero quiero que sea así:

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

Sé que es bastante fácil, pero no encuentro la forma correcta de hacerlo. ¡Por favor ayuda, gracias!

Respuesta1

Debes poner comillas dobles $outputcomo "$output"cuando lo haces eco. De lo contrario, la salida tendrá nuevas líneas y otros espacios en blanco transformados en solo espacios.

También es una buena práctica poner entre comillas la sustitución del comando. output="$(...)"en lugar de solooutput=$(...)

p.ej

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

Pero estarías mejor con solo:

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

información relacionada