shell在一个大文件找出想要的一段字符串操作技巧

昨天端午,晚上的时候接了一个电话,我朋友的公司,数据库被两个工作没多久的phper给弄坏了,具体就是把一个字段值,给全表弄成一个了名字了,当然这个是可以配置了禁止全表更新数据库,这下可急坏了,找到我,叫我给看一下,他们每天3:00是有备份的,按天备份,还好不是增量的,当然binlog日志也是开启的,我看了一下他们的备份文件是

[root@AY1406121449173218ccZ ~]# ls -lha /www/datebak/2016-06-09.sql
-rw-r--r-- 1 root root 4.9G Jun  9 03:03 /www/datebak/2016-06-09.sql
[root@AY1406121449173218ccZ ~]#

他们整个备份文件有5G,当然恢复的效果有多种,我想了一下,把他们今天这一整天的注册的用户给弄出来,也没有多少就10多个,然后就是想办法在这5个G的数据中把我需要的表找出来。

[root@AY1406121449173218ccZ datebak]# grep  -n  "ROP TABLE IF EXISTS `activity`" 2016-06-09.sql
-bash: activity: command not found
22:DROP TABLE IF EXISTS `activity`;
67:DROP TABLE IF EXISTS `activity_img`;
93:DROP TABLE IF EXISTS `activity_recommended`;
124:DROP TABLE IF EXISTS `atest`;
149:DROP TABLE IF EXISTS `black_user`;
175:DROP TABLE IF EXISTS `category`;
204:DROP TABLE IF EXISTS `class_grade`;
232:DROP TABLE IF EXISTS `collocate_banner`;
262:DROP TABLE IF EXISTS `course`;
330:DROP TABLE IF EXISTS `edu_account_bind`;
366:DROP TABLE IF EXISTS `function`;
392:DROP TABLE IF EXISTS `head_img`;
418:DROP TABLE IF EXISTS `information`;
455:DROP TABLE IF EXISTS `information_img`;
480:DROP TABLE IF EXISTS `installed_app`;

通过 shell的 grep 这个命令,我们可以找出我们需要的表中的行数

sed -n '5112,5153p' 2016-06-09.sql > tb_user_info.sql

再通过sed 命令将我们找到的行号写入另一个文件中,这样,基本就解决了,然后,把我导出来的数据 给导入原来的数据中,然后再将导出的一天的数据给导入,就解决了问题,整个解决问题的时间,没有超 过1小时,主要是shell 没有经常用,还查了下资料,当然思路也是最重要的,解决问题,第一个,要有一个清析的思路,把整个过程,好好过几下,要不然,考滤不全,会造成更多的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值