我需要使用来自另一个大csv文件(30K行)的数据更新巨大的csv文件(20M行)的选定行,
要更新的文件是1.csv
1120120031,55121
1120127295,55115
6135062894,55121
6135063011,55215
4136723818,55215
6134857289,55215
4430258714,55121
更新文件是2.csv
112012 ,55615
6135062,55414
6135063,55514
995707 ,55721
例如1_MOD.csv
1120120031,55621
1120127295,55615
6135062894,55421
6135063011,55515
4136723818,55215
6134857289,55215
4430258714,55121
修改:
到目前为止,我设法在while循环中测试sed,但脚本大约需要31天才能完成。我相信还有更好的方法,例如在数组中使用awk文件2.csv并使用该数组更新1.csv,这是我无法做到的,因为我的Awk知识有限
谢谢
答案 0 :(得分:1)
使用awk
,阅读2.csv
,并将第一个字段用作模式。
BEGIN {
FS = " *, *";
OFS = ",";
}
NR==FNR {
# Ensure there are no special characters in $1
if ($1 ~ /^[[:digit:]]+$/)
a[$1] = substr($2, 3, 1);
next;
} {
for (n in a)
if ($1 ~ "^"n) {
$2 = substr($2, 1, 2) a[n] substr($2, 4, length($2) - 3);
break;
}
} 1