Выводить функцию awk на новую строку каждый раз

Выводить функцию awk на новую строку каждый раз

Часть моего кода выглядит следующим образом:

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

Вывод будет примерно таким, сохраненным в новом файле с именем savedfile

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

Но я хочу, чтобы было так:

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

Я знаю, что это довольно просто, но я не могу найти правильный способ сделать это. Пожалуйста, помогите, спасибо!

решение1

Вам нужно использовать двойные кавычки $output, когда "$output"вы его выводите. В противном случае вывод будет содержать переводы строк и другие пробелы, преобразованные в просто пробелы.

Также хорошей практикой является заключение подстановки команды в двойные кавычки, output="$(...)"а не простоoutput=$(...)

например

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

Но вам было бы лучше просто:

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

Связанный контент