2014年10月8日水曜日

Linuxで巨大ファイルの編集

Linuxで巨大ファイルの編集です。巨大なログファイルなどを編集していて、マシンが固まってしまってしまうような場合、効果的。何を隠そう、今まで、時間をかけてボヤきながら編集していました(笑)。こんなエレガントで、賢い方法があるなんて。お恥ずかしい限りです。

考え方としては、ファイルを細かく分割して編集しやすくし、編集したい部分を編集、その後、統合するという流れになります。

編集例
# ファイルの行数を取得
$ wc -l sample.txt
850 sample.txt

# ファイルを100行ごとに分割(「xa」から始まるファイルに分割される)
$ cat sample.txt | split -l 100 -a 3
$ ls
sample.txt  xaaa  xaab  xaac  xaad  xaae  xaaf  xaag  xaah  xaai

# 分割を確認
$ wc -l xaaa
100 xaaa

$ wc -l xaab
100 xaab

$ wc -l xaac
100 xaac

$ wc -l xaad
100 xaad

$ wc -l xaae
100 xaae

$ wc -l xaaf
100 xaaf

$ wc -l xaag
100 xaag

$ wc -l xaah
100 xaah

$ wc -l xaai
50 xaai

# ここで編集したいファイルを編集

# 編集後に結合
$ cat xa* > result.txt
$ ls
result.txt  sample.txt  xaaa  xaab  xaac  xaad  xaae  xaaf  xaag  xaah  xaai

# 差分を確認
$ diff result.txt sample.txt

参考サイト
Linux:大きなテキストデータの一部だけ編集したい(HiiHahWIKIさん)
wcコマンド(ITpro)
splitコマンド(ITpro)
catコマンド(ITpro)
diffコマンド(ITpro)

0 件のコメント:

コメントを投稿