zoukankan      html  css  js  c++  java
  • 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 没有经常用,还查了下资料,当然思路也是最重要的,解决问题,第一个,要有一个清析的思路,把整个过程,好好过几下,要不然,考滤不全,会造成更多的问题

  • 相关阅读:
    [转]Java compiler level does not match解决方法
    Ubuntu使用MyEclipse闪退的解决办法
    支付宝AR红包引出Python中的PIL小试
    Neural Style学习3——操作
    Neural Style学习2——环境安装
    Neural Style学习1——简介
    mac下需要安装旧 Java SE 6 才能打开程序解决办法
    Linux system 函数的一些注意事项
    关于在android 4.2.2 上运行runlmbench
    linux kernel 字符设备详解
  • 原文地址:https://www.cnblogs.com/jackluo/p/5573160.html
Copyright © 2011-2022 走看看