毎回 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

$outputecho するときには二重引用符で囲む必要があります"$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

関連情報