csv行の各文字列を分離したいと思います。
線の例(他の線、同じ概念である可能性があります)
machine23,machine094,machine73,machine83
それではこれを試してみましょう
echo machine23,machine094,machine73,machine83 |awk -F"," '{for(i=1;i<=NF;i++){printf "%-20s", $i};printf "\n"}'
しかし、我々は得る
machine23 machine094 machine7 machine83
代わりに、次のような予想結果を取得します。
machine23
machine094
machine7
machine83
どんな提案がありますか?
ベストアンサー1
$ echo machine23,machine094,machine73,machine83 | tr ',' '\n'
machine23
machine094
machine73
machine83
または、実際にこれをawkで実行したい場合(おそらくawkでさらに処理したいからです):
$ echo machine23,machine094,machine73,machine83 | \
awk -F',' -v OFS='\n' '{$1=$1;$0=$0;print}'
machine23
machine094
machine73
machine83
これはきちんとしたawkトリックを使用します。フィールドを変更した後( のようにフィールドがそれと同じに設定されている場合でも$1=$
) set すると、$0=$0
awk は入力行全体の書式を再指定します。元のフィールド区切り文字(FS
この場合はカンマ)を次のように置き換えます。出力フィールド区切り記号(OFS
この場合は改行文字)。