2015-10-20 92 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'就像一個魅力。再次感謝 –

相關問題