繁体   English   中英

使用awk将条件从一行复制值到另一行

[英]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 =“ µ”}

我有的 :

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

我想要的是 :

  • 我想使用与PRODUCT相同的REF从每个MODEL行的颜色字符串中复制每个PRODUCT行的颜色字符串。
  • (REF是链接PRODUCT和MODEL的Sync KEY。)

结果我想要:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM