[英]copy value from a line to another line with condition using awk
首先,感谢所有我在这里学到的知识。
这是我的输入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和-va一起工作很长时间....
预先感谢。
佩佩。
您可以使用以下awk
:
awk -F'µ' '$1 ~ /^PRODUCT/{color=$3} $1 ~ /^MODEL/{$3=color}1' OFS='µ' file
说明:
$1 ~ /^PRODUCT/
-将列与PRODUCT
匹配。 color=$3
存储$3
值。 $1 ~ /^MODEL/
-将列与'MODEL'匹配。 $3=color
-为$3
赋值。 使用所有产品的记忆
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.