我正在对一个非常大的 mysql 文件运行导入作业,该文件大部分没有换行符。
使用 mysql 进程列表,我能够找到当前插入记录的 ID。
我想要做的是找出文件中出现该 ID 的字符,这样我就能知道导入作业的完成百分比。
grep -n 没有帮助,因为行号没有用,因为插入之间没有换行符。
我可以使用 grep (或其他命令)来找出字符串在文件中按字符排列的位置吗?
答案1
grep
您可以用换行符和wc -l
结果替换所有空格(或分号或...) 。
sed -e 's/ /\n/g/' input > result
wc -l < result
grep -n "$id" result
如果你不想创建额外的文件,可以调用 Perl 来解决问题:
perl -e '$/ = " "; /ID/ and print "[$.]" while <>; print "$.\n"' input
应该输出类似的内容[145]300
,这意味着 ID 出现在 300 条记录中的第 145 条记录中。
$/
是记录分隔符,$.
是记录计数器。