我有2个文件.第一个文件包含数据库中表的元组的行ID列表.第二个文件包含查询的"where"子句中包含这些行ID的SQL查询.
例如:
档案1
1610657303
1610658464
1610659169
1610668135
1610668350
1610670407
1610671066
Run Code Online (Sandbox Code Playgroud)
档案2
update TABLE_X set ATTRIBUTE_A=87 where ri=1610668350;
update TABLE_X set ATTRIBUTE_A=87 where ri=1610672154;
update TABLE_X set ATTRIBUTE_A=87 where ri=1610668135;
update TABLE_X set ATTRIBUTE_A=87 where ri=1610672153;
Run Code Online (Sandbox Code Playgroud)
我必须阅读文件1并在文件2中搜索与文件1中的行ID匹配的所有SQL命令,并将这些SQL查询转储到第三个文件中.
文件1有1,00,000个条目,文件2包含10倍的文件1条目,即1,00,0000.
我用过grep -f File_1 File_2 > File_3.但这非常慢,速度是每小时1000个条目.
有没有更快的方法来做到这一点?
fiz*_*zer 37
你不需要regexp,所以 grep -F -f file1 file2
jay*_*ngh 17
一种方式awk:
awk -v FS="[ =]" 'NR==FNR{rows[$1]++;next}(substr($NF,1,length($NF)-1) in rows)' File1 File2
Run Code Online (Sandbox Code Playgroud)
这应该很快.在我的机器上,花了不到2秒的时间创建了100万个条目的查找,并将其与300万行进行比较.
机器规格:
Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz (8 cores)
98 GB RAM
Run Code Online (Sandbox Code Playgroud)