AWK -在两个csv文件之间替换并正确打印



我有两个文件:

f1.csv:

<>以前CL *文AV *阿扎PS*LUGf2.csv:

<>之前2100-12-31 * 1234 *托马斯* Frederuc test1 * 1931-02-20 * 1931-02-20 * 1931-02-20 * * 1 * 0 * 0 * CL *詹姆12 * 13 * a1 * zz3 * D * 13 * 1234 *特克斯* F杰克* Borbin * 2100-12-31 * 1235 * 1931-02-21 * 1931-02-21 * 1931-02-21 * test2 * 1 * 0 * 0 * p * Willliams侯* 14 * a2 * zz4 * * 13 * 1235 *巴克* F221-12-31 *1236A*Pierce*Matheus*1931-02-22*8791239*8791240*test3*1*1*1*AV*Magnum st*15*a3*zz5*A*13*1236*Euo*F我想要这个输出:

<>之前2100-12-31 * 1234 *托马斯* Frederuc test1 * 1931-02-20 * 1931-02-20 * 1931-02-20 * * 1 * 0 * 0 * VIN *詹姆12 * 13 * a1 * zz3 * D * 13 * 1234 *特克斯* F杰克* Borbin * 2100-12-31 * 1235 * 1931-02-21 * 1931-02-21 * 1931-02-21 * test2 * 1 * 0 * 0 *耳* Willliams侯* 14 * a2 * zz4 * * 13 * 1235 *巴克* F221-12-31 *1236A*Pierce*Matheus*1931-02-22*8791239*8791240*test3*1*1*1*AZA*Magnum st*15*a3*zz5*A*13*1236*Euo*F我有以下代码:

<>以前awk - f"*"FNR = = NR{(1美元)= 2美元;下一个}(12美元){$ 12 =(12美元),打印}"OFS =‘*’f1.csv f2.csv但是输出是:

<>前*詹姆12 * 13 * a1 * zz3 * D * 13 * 1234 *特克斯test1 * F931-02-20 * 6791237 * 6791237 * * 1 * 0 * 0 *文* Willliams侯* 14 * a2 * zz4 * * 13 * 1235 *巴克* F791238 * 7791239 * test2 * 1 * 0 * 0 *耳*Magnum st*15*a3*zz5*A*13*1236*Euo*F-02-22*8791239*8791240*test3*1*1*1*VIN如何获得我想要的输出?

你的代码在这里工作得很好,你的系统/代码环境和awk版本是什么?

似乎与回车有关,所以最好在处理这些文件之前运行这个:

dos2unix files

但是,你可以这样做:

awk 'BEGIN{FS=OFS="*";RS="rn|r|n";}FNR==NR{A[$1]=$2;next}($12 in A){$12=A[$12];print}' f1.csv f2.csv 

最新更新