2015-10-20 38 views
0

首先感谢所有我在这里学到的。从一行复制值到另一行的条件使用awk

这是我的输入CSV:

TYPEµREFµCOLORµ 
PRODUCTµ354µblueµ 
MODELµ354µµ 
MODELµ354µµ 
PRODUCTµ253µgreenµ 
MODELµ253µµ 
MODELµ253µµ 

隔板是{FS = “μ”; OFS = “μ”}

我有:

    每个
  • PRODUCT行在COLOR列中包含一个值。
  • 每个MODEL行包含一个空的COLOR列。

我想要什么:

  • 我想要的颜色从字符串中使用相同的REF产品的每一个车型系列彩色串每条产品线复制。
  • (REF是同步密钥连接产品和型号。)

结果,我想:

TYPEµREFµCOLORµ 
PRODUCTµ354µblueµ 
MODELµ354µblueµ 
MODELµ354µblueµ 
PRODUCTµ253µgreenµ 
MODELµ253µgreenµ 
MODELµ253µgreenµ 

我希望我是清楚的....

我试图与合作如果和-va很长时间....

预先感谢。

PéPé。

+0

有awk的代码在你的问题,到目前为止,你已经试过失踪。 –

回答

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 
+0

第一个答案是完美的ref和使用数组。自2天以来我尝试过:/非常感谢。 –

0

您可以使用此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赋值。
+0

完美!谢谢 !我会玩,以验证裁判。 –

+0

与REF键:'awk-F'μ''$ 1〜/^PRODUCT/{color = $ 3; ref = $ 2} $ 1〜/^MODEL/&& $ 2〜ref {$ 3 = color} 1'OFS ='μ 'file.csv'就像一个魅力。再次感谢 –

相关问题