首先感谢我在这里学到的一切。
这是我的输入csv:
TYPEµREFµCOLORµ
PRODUCTµ354µblueµ
MODELµ354µµ
MODELµ354µµ
PRODUCTµ253µgreenµ
MODELµ253µµ
MODELµ253µµ
分隔符为{FS =“μ”; OFS =“μ”}
我有什么:
我想要的是什么:
我想要的结果:
TYPEµREFµCOLORµ
PRODUCTµ354µblueµ
MODELµ354µblueµ
MODELµ354µblueµ
PRODUCTµ253µgreenµ
MODELµ253µgreenµ
MODELµ253µgreenµ
我希望我很清楚......
我试着用if和-v很长时间......
先谢谢。
PEPE。
答案 0 :(得分:0)
您可以使用此awk
:
awk -F'µ' '$1 ~ /^PRODUCT/{color=$3} $1 ~ /^MODEL/{$3=color}1' OFS='µ' file
<强>解释强>
$1 ~ /^PRODUCT/
- 匹配PRODUCT
。color=$3
- 存储$3
值。$1 ~ /^MODEL/
- 匹配“模型”列。$3=color
- 为$3
分配值。答案 1 :(得分:0)
使用所有产品的记忆
awk 'BEGIN { OFS = FS = "µ"}
{
if ($1 ~ /^PRODUCT/) Prod[ $2] = $3
else if (Prod[ $2] !~ /^$/) $3 = Prod[ $2]
print
}' YourFile
假设模型仅与标题产品
相关联awk 'BEGIN { OFS = FS = "µ"}
{
if ($1 ~ /^PRODUCT/){ Ref=$2; Color = $3 }
else if ( Ref == $2 && Color !~ /^$/) $3 = Color
print
}' YourFile