文件按列7排序,它需要为具有相同ID的每组行组合字段11,12,13,14,15和16,这是第7列的值。 / p>
我终于解决了我的问题,感谢所有!!。
What I have done:
BEGIN{
FS="\t"
x="\"\"";
}
(NR !=1){
for(i=11;i<=16;i++)
{
if($i!= x)
{
k=match(a[$7], $i);
if (k == 0)
{
a[$7]=a[$7]"\t"$i;
}
}
}
b[$7]=b[$7]"|"$17"\t"$18"\t"$19"\t"$20;
c[$7]=c[$7]"|"$1"\t"$2"\t"$3"\t"$4"\t"$5"\t"$6"\t"$7"\t"$8"\t"$9"\t"$10;
}
END{
for ( g in a)
{
t=split(a[g], A, "\t");
for (y=t; y<7; y++)
{
a[g]=a[g]"\t"x;
}
mx=split(b[g], B, "|");
mt=split(c[g], C, "|");
# From here, it's where I have the problem. I don't know how to square the values of the variables for the next two loops. So the lines are not duplicated
for (i=2; i<=mx; i++)
{
print C[i]"\t"a[g]"\t"B[i];
} # Here I left over a "for{}" loop
}
}
输入CSV文件:
subtype idproject qvnqsa country lang id idkey vbt_type brand_reco dealer_reco M1 M2 M3 M4 M5 M6 verbatim Edited Translated Category keywords
V voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak."
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "aanpak,aangename"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "aanpak,persoonlijke"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "luisteren"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "nemen,tijd"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP024" "super"
V voc_sales_ren "QVN" "BE" "NL" "027460103" **"027460103expe"** "expe" "9" "9" "" "" "" "" "" "" "Ok" "Ok" "Ok"
VP voc_sales_ren "QVN" "BE" "NL" "027460103" **"027460103expe"** "expe" "9" "9" "VP024" "" "" "" "" "" "Ok" "Ok" "Ok" "VP024" "Ok"
我的脚本得到了什么。在输出行加倍。
subtype idproject qvnqsa country lang id idkey vbt_type brand_reco dealer_reco M1 M2 M3 M4 M5 M6 verbatim Edited Translated Category keywords
V voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak."
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "aanpak,aangename"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "aanpak,persoonlijke"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "luisteren"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "nemen,tijd"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP024" "super"
V voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak."
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "aanpak,aangename"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "aanpak,persoonlijke"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "luisteren"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "nemen,tijd"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP024" "super"
V voc_sales_ren "QVN" "BE" "NL" "027460103" **"027460103expe"** "expe" "9" "9" "VP024" "" "" "" "" "" "Ok" "Ok" "Ok"
VP voc_sales_ren "QVN" "BE" "NL" "027460103" **"027460103expe"** "expe" "9" "9" "VP024" "" "" "" "" "" "Ok" "Ok" "Ok" "VP024" "Ok"
V voc_sales_ren "QVN" "BE" "NL" "027460103" **"027460103expe"** "expe" "9" "9" "VP024" "" "" "" "" "" "Ok" "Ok" "Ok"
VP voc_sales_ren "QVN" "BE" "NL" "027460103" **"027460103expe"** "expe" "9" "9" "VP024" "" "" "" "" "" "Ok" "Ok" "Ok" "VP024" "Ok"
预期产出:
subtype idproject qvnqsa country lang id idkey vbt_type brand_reco dealer_reco M1 M2 M3 M4 M5 M6 verbatim Edited Translated Category keywords
V voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak."
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "aanpak,aangename"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "aanpak,persoonlijke"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "luisteren"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP001" "nemen,tijd"
VP voc_sales_ren "QVN" "BE" "NL" "027460100" **"027460100expe"** "expe" "9" "9" "VP001" "" "" "" "" "" "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "Van het eerste moment tot het laatste moment een super-service! Ze luisteren, nemen hun tijd. Een zeer persoonlijke aangename aanpak." "VP024" "super"
V voc_sales_ren "QVN" "BE" "NL" "027460103" **"027460103expe"** "expe" "9" "9" "VP024" "" "" "" "" "" "Ok" "Ok" "Ok"
VP voc_sales_ren "QVN" "BE" "NL" "027460103" **"027460103expe"** "expe" "9" "9" "VP024" "" "" "" "" "" "Ok" "Ok" "Ok" "VP024" "Ok"
输入:
ID A B C D E F G H
1 "9" "9" "Vp25" "" "" "" "" ""
1 "9" "9" "Vp34" "" "" "" "" ""
1 "9" "9" "Vp98" "" "" "" "" ""
2 "9" "9" "Ap45" "" "" "" "" ""
2 "9" "9" "Ap66" "" "" "" "" ""
预期产出:
ID A B C D E F G H
1 "9" "9" "Vp25" "Vp34" "Vp98" "" "" ""
1 "9" "9" "Vp25" "Vp34" "Vp98" "" "" ""
1 "9" "9" "Vp25" "Vp34" "Vp98" "" "" ""
2 "9" "9" "Ap45" "Ap66" "" "" "" ""
2 "9" "9" "Ap45" "Ap66" "" "" "" ""
答案 0 :(得分:0)
澄清问题后更新:
对于所有出现的键(某列中的值),必须收集另一列中的不同值,并使用此键插入每行的一系列列中:
我们可以说,我们以制表符分隔的inputFile
看起来像这样
ID A B C D E F G H
1 "9" "9" "Vp25" "" "" "" "" ""
1 "9" "9" "Vp34" "" "" "" "" ""
1 "9" "9" "Vp98" "" "" "" "" ""
2 "9" "9" "Ap45" "" "" "" "" ""
2 "9" "9" "Ap66" "" "" "" "" ""
并将其第一列作为关键字。然后,任务是用C列中的所有不同值填充C-G列,例如C列中的键:
ID A B C D E F G H
1 "9" "9" "Vp25" "Vp34" "Vp98" "" "" ""
1 "9" "9" "Vp25" "Vp34" "Vp98" "" "" ""
1 "9" "9" "Vp25" "Vp34" "Vp98" "" "" ""
2 "9" "9" "Ap45" "Ap66" "" "" "" ""
2 "9" "9" "Ap45" "Ap66" "" "" "" ""
这可以通过以下awk脚本来实现:
awk 'BEGIN{FS=OFS="\t"; key=1; aggregate=4; to=8;}
NR==FNR{
if($aggregate != "\"\"") {
a[$key] = a[$key]$aggregate""OFS
b[$key] = b[$key] +1
}
}
NR!=FNR{
if(FNR == 1) {print $0}
else {
line = ""
for(i=1;i<aggregate;i++) {
line = line""$i""OFS;
}
line = line""a[$key]
for(i = aggregate+b[$key]; i<=to; i++){line= line"\"\""OFS}
for(i=to+1; i<NF; i++) {
line = line""$i""OFS
}
line = line""$NF
print line
}
}' inputFile inputFile
请注意,inputFile会在调用中添加两次!此外,在BEGIN{...}
部分中,包含密钥(key
)的列的索引,用于聚合数据aggregate
的列的索引以及表示结束的列的索引必须指定范围