我有兩個文件,一個用製表符分隔,另一個用分號分隔。這兩個文件在第一列中都有一個共同的ID。一方面,我想根據公共ID在第三列中合併值。另一方面,我想用第二個文件第2列中的字符串替換第一個文件第2列中的字符串,同時考慮到Common ID。AWK合併值並替換字符串
第一個文件:
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!!
我們需要任何特別的原因要受到如此多的線,這樣長的輸入線?我不明白爲什麼你不能表達你的問題,說5行輸入,每行5個字段。如果你不能用簡單的字段將你的例子簡化成簡潔的大小,我懷疑是否有很多人會費心去理解它,以便他們能夠幫助你。 –
@EdMorton謝謝!對於你的建議,現在更好理解了? – Polucho
是的,很多,但我看到你已經接受了一個答案,所以它沒有讓很多專家有時間看看你的問題,並試圖幫助你。 FWIW您選擇的答案違反了awk的變量命名約定,在錯誤的地方設置了'FS'(功能錯誤被第一行隱藏,而不是第一行,否則效率低下),包含冗餘代碼,具有僞隨機分號和在由某些awk運行時會產生語法錯誤。祝你好運! –