分割线并替换缺失的字段

0 awk text-processing

有谁知道我如何“拆分”下面的行(这只是一个例子):

mercedes|$40000|black|$42000|white|$41000|red
audi|$31000|blue|$10000|white
mercedes|$5000|blue
Run Code Online (Sandbox Code Playgroud)

我期望的输出是:

mercedes|$40000|black
mercedes|$42000|white
mercedes|$41000|red
audi|$31000|blue
audi|$10000|white
mercedes|$5000|blue
Run Code Online (Sandbox Code Playgroud)

谢谢

Kus*_*nda 7

一个简单的awk脚本,用于从第二个字段开始输出每一行的字段对,在每个输出对前加上该行的第一个字段。

$ 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
Run Code Online (Sandbox Code Playgroud)

这假设输入符合预期,即最终数据应组织为三列。这意味着输入应严格遵循

title|pair 1a|pair 1b|pair 2a|pair 2b|...|pair Na|pair Nb
Run Code Online (Sandbox Code Playgroud)