毎回新しい行にawk関数を印刷します。 [重複]

毎回新しい行にawk関数を印刷します。 [重複]

私のコードの一部は次のとおりです。

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

出力は次のようになり、savefileという新しいファイルに保存されます。

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

おすすめ記事