tar でまとめてある複数のテキストファイルをディスクに展開せずに走査する
2011-02-01-2
[Programming]
大量のログデータをもらってきて分析するようなときなどに表題のタスクに遭遇する。無闇に tar ball を展開するとすぐにディスクフルになりがちゆえ。
このような場合は tar の O オプション(大文字のオー)を用いる。
以下、例で説明。
data.tar.gz には 0001.txt から 1000.txt までの千個のテキストファイルが入っているとする。
(1) 行数を数えるには:
(2) 特定の文字列を含む行を取り出すには:
(3) 文字コードを変換して圧縮して置いておくには:
こういうやり方はオンザフライ(On The Fly)と呼ばれるようだ。ディスクイメージを予め作成せずにCD-Rに直接書き込む方式もこう呼ばれていて、メジャー。
追記110610: ウェブから直接:
このような場合は tar の O オプション(大文字のオー)を用いる。
以下、例で説明。
data.tar.gz には 0001.txt から 1000.txt までの千個のテキストファイルが入っているとする。
(1) 行数を数えるには:
tar zxOf data.tar.gz | wc -l
(2) 特定の文字列を含む行を取り出すには:
tar zxOf data.tar.gz | grep 'lang:ja'
(3) 文字コードを変換して圧縮して置いておくには:
tar zxOf data.tar.gz | nkf -w | gzip -c > data-utf8.txt.gz
こういうやり方はオンザフライ(On The Fly)と呼ばれるようだ。ディスクイメージを予め作成せずにCD-Rに直接書き込む方式もこう呼ばれていて、メジャー。
追記110610: ウェブから直接:
curl -s http://...tar.gz | tar zxOf - | nkf -w | gzip -c > a.txt.gz
この記事に言及しているこのブログ内の記事