我有两个文件,一个用制表符分隔,另一个用分号分隔。两个文件在第一列中都有一个公共ID。一方面,我想根据公共ID组合第3列中的值。另一方面,我希望将第一个文件的第2列中的字符串替换为第二个文件的第2列中的字符串,同时遵守公共ID。
第一档:
ID;String;Category;
2;es un anuncio interesante que le puede servir para alguien;321;0;;
3;es un anuncio de un banco que quiere presentarse;72;0;;
4;es un anuncio de un banco que ofrece prestamos para empresas.;52;0;;
4;es un anuncio de un banco que ofrece prestamos para empresas.;70;0;;
5;credito pyme banamex para hacer crecer tu negocio;50;0;;
5;credito pyme banamex para hacer crecer tu negocio;52;0;;
5;credito pyme banamex para hacer crecer tu negocio;70;0;;
5;credito pyme banamex para hacer crecer tu negocio;71;0;;
第二档:
ID String Category;
2 Es un anuncio interesante que le puede servir para alguien.
3 Es un anuncio de un banco que quiere presentarse.
4 Es un anuncio de un banco que ofrece prestamos para empresas.
5 Credito Pyme Banamex para hacer crecer tu negocio.
期望的输出:
ID String Category
2 Es un anuncio interesante que le puede servir para alguien. 321
3 Es un anuncio de un banco que quiere presentarse. 72
4 Es un anuncio de un banco que ofrece prestamos para empresas. 52 70
5 Credito Pyme Banamex para hacer crecer tu negocio. 50 52 70 71
我做了什么:
awk 'BEGIN { FS=";";} NR==FNR{ CAT[$1]=CAT[$1]"\t"$3; next;}{FS="\t";textos[$1]=$2;} END{ for (ID in CAT) {print ID,textos[ID],CAT[ID];}}' fileA fileB
我的输出:
2 Es un anuncio interesante que le puede servir para alguien.
3 Es un anuncio de un banco que quiere presentarse. 72
4 Es un anuncio de un banco que ofrece prestamos para empresas. 52 70
5 Credito Pyme Banamex para hacer crecer tu negocio 50 52 70 71
¡¡In the first line the value of the third column doesn't appear!!
答案 0 :(得分:2)
你可以使用这个awk:
awk -F';' -v OFS='\t' 'FNR==NR {
a[$1] = a[$1] OFS $3
next
}
FNR==1 {
FS="\t"
print
}
$1 in a {
print $1, $2 a[$1]
}' file1 file2
<强>输出:强>
ID String Category
2 Es un anuncio interesante que le puede servir para alguien. 321
3 Es un anuncio de un banco que quiere presentarse. 72
4 Es un anuncio de un banco que ofrece prestamos para empresas. 52 70
5 Credito Pyme Banamex para hacer crecer tu negocio. 50 52 70 71