Imprima a função awk em uma nova linha toda vez

Imprima a função awk em uma nova linha toda vez

parte do meu código está abaixo:

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

A saída será algo assim, salva em um novo arquivo chamado savefile

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

Mas eu quero que seja assim:

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

Eu sei que é muito fácil, mas não consigo encontrar a maneira certa de fazer isso, por favor, ajude, obrigado!

Responder1

Você precisa colocar aspas duplas $outputcomo "$output"quando faz eco. Caso contrário, a saída terá novas linhas e outros espaços em branco transformados em apenas espaços.

Também é uma boa prática colocar aspas duplas na substituição do comando. output="$(...)"em vez de apenasoutput=$(...)

por exemplo

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

Mas seria melhor você apenas:

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

informação relacionada