行分割と不足しているフィールドを置き換える

行分割と不足しているフィールドを置き換える

次の行を「分割」する方法を知っている人はいますか? (これは単なる例です。)

mercedes|$40000|black|$42000|white|$41000|red
audi|$31000|blue|$10000|white
mercedes|$5000|blue

私の予想結果は次のとおりです。

mercedes|$40000|black
mercedes|$42000|white
mercedes|$41000|red
audi|$31000|blue
audi|$10000|white
mercedes|$5000|blue

ありがとう

ベストアンサー1

awk2 番目のフィールドで始まる各行のフィールドのペアを出力し、各出力ペアの前にその行の最初のフィールドを追加する簡単なスクリプトです。

$ awk -F '|' 'BEGIN { OFS=FS } { for (i = 2; i+1 <= NF; i += 2) print $1, $i, $(i+1) }' file
mercedes|$40000|black
mercedes|$42000|white
mercedes|$41000|red
audi|$31000|blue
audi|$10000|white
mercedes|$5000|blue

これは入力が期待どおりであると仮定します。つまり、最終データは3つの列で構成する必要があります。これは、入力が厳密に準拠する必要があることを意味します。

title|pair 1a|pair 1b|pair 2a|pair 2b|...|pair Na|pair Nb

おすすめ記事