次の行を「分割」する方法を知っている人はいますか? (これは単なる例です。)
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
awk
2 番目のフィールドで始まる各行のフィールドのペアを出力し、各出力ペアの前にその行の最初のフィールドを追加する簡単なスクリプトです。
$ 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