前几天因为同事一个sql写的有问题,导致我这边处理mysql入库出现数据丢失,没什么办法啊,为了回复数据,只能去翻前两天的log了,但是怎么从十几个几十兆的文件中找到我们需要的数据然后提取出来呢,我的第一反映就是在服务端通过shell 脚本find方法,查找需要的数据,然后导入到一个临时文件。然后再把这个临时文件导出来进一步的处理。后来一个同事说,sublime可以做这个工作,所以就研究了下sublime的部分功能,原来sublime,不仅可以如此方便的在庞杂的数据中提取出我们想要的数据,而且可以按行提取,一切尽在selection里面。
首先打开需要处理的文件,找到要提取行的数据按【ctrl + F】,把数据复制到查找面板里,然后选择【find all】,在文件中你会看到我们想选的内容被选中了,然后选择tab中的【selection】的下拉列表中的【Expand Selection to line】,你会看到我们要查找的数据所在的行被选中,然后按【ctrl + C】赋值数据行,最后新建文件粘贴数据就好了,这样我们所需要的数据就被提取出来了。
上面的数据虽然提取出来了,但是要怎么把他们转化成一个个的sql语句然后开一个事务去执行呢,这里就应该用到字符串的替换操作了。
【ctrl + shift + F】弹出查找替换窗口,使用insert into语句替换我们不需要的数据就可以了,本来以为这样就结束了,结果,最后面的数据不是相同的数值,所以不能全覆盖。这样还是无法解决啊,要是能去掉空行,删除换行符就好了,于是找到了。
Sublime删除空行
删除空行
【ctrl + H】
进入替换模式, 然后【alt + R】
或者点击左边第一行一个的正则表达式, 变得更灰表示使用正则模式.
第一行查找部分输入【^\n】
替换部分为空,再replace all. 这样就可以把所有空行都删掉. 最简单的方法..
删除多余空格
同上, 进入正则表达式替换. 输入查找 【(?ms)\ {2,}】
, 替换成空格. 前者表示2个或以上空格的选取. 同理可以进行很多方便的处理.
DeleteBlankLines 插件
sublime text 中没有直接可以删除空行的功能和快捷键,但我们可以安装一个插件"DeleteBlankLines"来实现.
插件地址:https://github.com/NicholasBuse/sublime_DeleteBlankLines
在sublime text中Ctrl+Shift+P打开命令框输入install package,搜索DeleteBlankLines并安装即可.
相关快捷键如下:
在Windows操作系统中:
Ctrl+Alt+Backspace --> 删除所有空行
Ctrl+Alt+Shift+Backspace --> 删除多余空行
在OSX操作系统中:
Ctrl+Alt+Delete --> 删除所有空行
Ctrl+Alt+Shift+Delete --> 删除多余空行
在Linux操作系统中:
Ctrl+Alt+Backspace --> 删除所有空行
Ctrl+Alt+Shift+Backspace --> 删除多余空行
删除所有空行:删除所有空行
删除多余空行:将两个及两个以上的连续空行替换成一个空行
注意:如果行中带有tab或空格字符则不会被删除,只删除只含有\n或\r的空行