【linux】巨大なファイルから必要な部分だけ抜き出す
問題
MySQLの巨大なダンプファイルから、ごく一部を抜き出したい。
うまく途中だけ抽出したり、ファイルを分割する方法は?
答え
ファイルの大きさによって対応を変えるとよい。
ファイルサイズがほどほどの場合
巨大すぎなければ、以下で分割できる。
csplit ダンプファイル.dump '/DROP TABLE IF EXISTS/' {*}
ファイルが大きい場合
行数を調べて分割する場合は、「– Current Database:」のようなダンプファイルによくある表現で検索して、
egrep -n '^-- Current Database:' mysql_2014-11-18.dmp …… 401237:-- Current Database: `aaaa` 414577:-- Current Database: `bbbb` 425362:-- Current Database: `cccc` 425370:-- Current Database: `mysql` 426029:-- Current Database: `qqqq` 439249:-- Current Database: `rrrr` ……
行数指定で切り出す。
sed -n '425368,426027p' mysql_2014-11-18.dmp > databasename.dump
sedで1行目から指定行数までを切り出したいときは、開始は1を指定する(0ではなくて)。
コメント