AWK:合并 CSV 文件中的列
AWK: Merge columns in a CSV file
文件按第7列排序,需要合并字段11、12、13、14、15、16,每组ID相同的行,即第7列的值.
I finally solved my problem alone, thanks to all!!.
What I have done:
BEGIN{
FS="\t"
x="\"\"";
}
(NR !=1){
for(i=11;i<=16;i++)
{
if($i!= x)
{
k=match(a[], $i);
if (k == 0)
{
a[]=a[]"\t"$i;
}
}
}
b[]=b[]"|""\t""\t""\t";
c[]=c[]"|""\t""\t""\t""\t""\t""\t""\t""\t""\t";
}
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"
What I get with my script. In the output lines are doubled.
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" "" "" "" ""
问题澄清后更新:
对于所有出现的键(特定列中的值),必须收集另一列中的不同值,并将其插入到具有该键的每一行的一系列列中:
比方说,我们的制表符分隔 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 列的键:
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 [=12=]}
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
和表示结束的列的索引必须指定范围
文件按第7列排序,需要合并字段11、12、13、14、15、16,每组ID相同的行,即第7列的值.
I finally solved my problem alone, thanks to all!!.
What I have done:
BEGIN{
FS="\t"
x="\"\"";
}
(NR !=1){
for(i=11;i<=16;i++)
{
if($i!= x)
{
k=match(a[], $i);
if (k == 0)
{
a[]=a[]"\t"$i;
}
}
}
b[]=b[]"|""\t""\t""\t";
c[]=c[]"|""\t""\t""\t""\t""\t""\t""\t""\t""\t";
}
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"
What I get with my script. In the output lines are doubled.
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" "" "" "" ""
问题澄清后更新:
对于所有出现的键(特定列中的值),必须收集另一列中的不同值,并将其插入到具有该键的每一行的一系列列中:
比方说,我们的制表符分隔 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 列的键:
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 [=12=]}
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
和表示结束的列的索引必须指定范围