« テキスト処理の道具達(3):Grep結果から元文書にジャンプ | トップページ | その名はサイコパス »

テキスト処理の道具達(4):秀丸の「grepして置換」を使ってみる

前回のGrep結果ではファイル名と位置までは分かりますが、その他の情報が何も分かりません。もう少し何とかならないかと思って工夫してみました。

前回も記載した通り、Livedoorのブログでは、コメント投稿者の載っている行はHTML中で以下のように記述されているようです(分かりやすさのためにタブ記号を<tab>で置き換えました)。
<tab><tab><div class="comments-post">Posted by 月影兵庫
at 2008年08月24日 09:20</div>

コメント投稿者の次の行にある日付と時刻の情報も目次に表示させてみる事にします。
★ご注意★今回の処理では、元のHTMLファイルを書き換えてしまいます。元のファイルを壊したくない場合には、フォルダごと別の所にコピーして、コピーしたファイル群に対して処理を行ってください。

それでは、秀丸エディタの[検索]-[grepして置換]機能を使って、上で示した2行を1行にまとめてしまいます。
<tab><tab><div class="comments-post">Posted by 月影兵庫
at 2008年08月24日 09:20</div>

<tab><tab><div class="comments-post">Posted by 月影兵庫// at 2008年08月24日 09:20</div>
に置換します。つまり、改行を消してしまう訳です。//は処理した事が分かり易いように適当に入れた文字です。

[検索]-[grepして置換]で以下のように指定します。
★ご注意★元のHTMLファイルを書き換える処理ですのでご注意を。

検索する文字列(S): ^(.*<div class="comments-post">Posted by.*)\n(.*at .*)$
置換する文字列(G): \1//\2
検索するファイル(N): *.html
検索するフォルダ(D): d:\work\archives
正規表現(R)にチェック

ここで、\1は検索条件式の最初の括弧で囲まれた部分を、\2は二番目の括弧で囲まれた部分への置換を表します。
(注) 検索する文字列は「^(\t\t<div class="comments-post">Posted by.*)\n(.*at .*)$」と\tを使っても良いはずです。検索条件を微妙に変えてますが特に意図はありません。試行錯誤していたので、少し違うパターンでやってしまいました。

これを実行すると収集したファイル数によりますが、2000ファイル以上、9万箇所以上の置換が行われます。PCによっては10分以上かかるかもしれません。
私の場合は、処理の途中に以下の箇所で変換できない文字コードがある旨のエラーが出ました。これらについては「無視する」で処理を継続し、後で各ファイルの文字化け部分を手作業で削除し、再度同じ条件で[grepして置換]を実行しました。
(変換済の行は検索条件に引っかからないので、エラーで無視したファイルの該当箇所だけが置換されます)

d:\work\archives\51158737.html(400): 
d:\work\archives\51176495.html(845):
d:\work\archives\51176495.html(864):
d:\work\archives\51176495.html(875):
d:\work\archives\51284958.html(305):
d:\work\archives\51501888.html(196):
d:\work\archives\51709738.html(513):
d:\work\archives\51786956.html(1538):
d:\work\archives\51786956.html(1539):
d:\work\archives\51839541.html(598):
d:\work\archives\51852731.html(1009):
d:\work\archives\52013100.html(520):
d:\work\archives\52024181.html(428):
d:\work\archives\52055292.html(1043):
d:\work\archives\52067688.html(618):

これで、以下のような投稿日付・時刻入りの目次ができました。

51866628.html(627):         <div class="comments-post">Posted by 月影兵庫// at 2008年03月29日 17:09</div>
51893563.html(256):         <div class="comments-post">Posted by 月影兵庫// at 2008年04月24日 19:27</div>
51894623.html(1751):         <div class="comments-post">Posted by 月影兵庫// at 2008年04月26日 20:19</div>
・・・

このままでは見にくいので、以下の置換を行いました。

(1) 「\t\t.*Posted by 」を削除(空に置換)
(2) 「</div>$」を削除(空に置換)
(3) 「// 」を「\t」に置換
(4) 「^」を「d:\\work\\archives\\」に置換

これで以下のように整形できました。ちなみに、このHTMLは10月23日に採取したので、10月22日までのコメントが一覧されています。

d:\work\archives\51866628.html(627): 月影兵庫    at 2008年03月29日 17:09
d:\work\archives\51893563.html(256): 月影兵庫    at 2008年04月24日 19:27
d:\work\archives\51894623.html(1751): 月影兵庫    at 2008年04月26日 20:19
d:\work\archives\52013391.html(649): 月影兵庫    at 2008年08月23日 22:13
d:\work\archives\52013391.html(1564): 月影兵庫    at 2008年08月24日 08:53
d:\work\archives\52013391.html(1601): 月影兵庫    at 2008年08月24日 09:20
d:\work\archives\52013391.html(1774): 月影兵庫    at 2008年08月24日 21:58
d:\work\archives\52013391.html(1809): 月影兵庫    at 2008年08月24日 23:09
d:\work\archives\52016372.html(481): 月影兵庫    at 2008年08月26日 22:27
d:\work\archives\52016372.html(503): 月影兵庫    at 2008年08月26日 22:46
d:\work\archives\52016372.html(987): 月影兵庫    at 2008年08月27日 07:55
d:\work\archives\52016372.html(1045): 月影兵庫    at 2008年08月28日 00:08
d:\work\archives\52017259.html(1758): 月影兵庫    at 2008年08月28日 21:39
d:\work\archives\52017259.html(2054): 月影兵庫    at 2008年08月29日 22:04
d:\work\archives\52017259.html(2073): 月影兵庫    at 2008年08月29日 22:29
d:\work\archives\52017259.html(2160): 月影兵庫    at 2008年08月30日 21:30
d:\work\archives\52019228.html(558): 月影兵庫    at 2008年08月29日 23:34
d:\work\archives\52019228.html(589): 月影兵庫    at 2008年08月29日 23:56
d:\work\archives\52019228.html(616): 月影兵庫    at 2008年08月30日 00:13
d:\work\archives\52019228.html(627): 月影兵庫    at 2008年08月30日 00:19
d:\work\archives\52019228.html(1317): 月影兵庫    at 2008年08月30日 22:44
d:\work\archives\52020290.html(779): 月影兵庫    at 2008年08月30日 23:03
d:\work\archives\52021889.html(842): 月影兵庫    at 2008年09月01日 21:32
d:\work\archives\52022898.html(303): 月影兵庫    at 2008年09月02日 07:30
d:\work\archives\52023299.html(991): 月影兵庫    at 2008年09月02日 23:16
d:\work\archives\52023879.html(2993): 月影兵庫    at 2008年09月03日 22:05
d:\work\archives\52025809.html(570): 月影兵庫    at 2008年09月05日 23:09
d:\work\archives\52026128.html(2760): 月影兵庫    at 2008年09月05日 22:29
d:\work\archives\52029941.html(494): 月影兵庫    at 2008年09月10日 07:50
d:\work\archives\52030834.html(2422): 月影兵庫    at 2008年09月10日 23:04
d:\work\archives\52031818.html(1106): 月影兵庫    at 2008年09月11日 22:49
d:\work\archives\52032786.html(6370): 月影兵庫    at 2008年09月13日 22:36
d:\work\archives\52036225.html(564): 月影兵庫    at 2008年09月16日 20:47
d:\work\archives\52038367.html(1392): 月影兵庫    at 2008年09月19日 00:23
d:\work\archives\52038367.html(3994): 月影兵庫    at 2008年09月19日 23:44
d:\work\archives\52038367.html(4164): 月影兵庫    at 2008年09月20日 00:09
d:\work\archives\52038946.html(732): 月影兵庫    at 2008年09月19日 23:10
d:\work\archives\52039251.html(514): 月影兵庫    at 2008年09月19日 22:33
d:\work\archives\52040146.html(1486): 月影兵庫    at 2008年09月20日 23:19
d:\work\archives\52042472.html(1258): 月影兵庫    at 2008年09月23日 23:28
d:\work\archives\52043433.html(1890): 月影兵庫    at 2008年09月25日 00:19
d:\work\archives\52043433.html(2819): 月影兵庫    at 2008年09月25日 23:52
d:\work\archives\52045443.html(2224): 月影兵庫    at 2008年09月27日 08:02
d:\work\archives\52045443.html(2273): 月影兵庫    at 2008年09月27日 08:09
d:\work\archives\52045443.html(3686): 月影兵庫    at 2008年09月27日 15:53
d:\work\archives\52045443.html(4002): 月影兵庫    at 2008年09月27日 20:49
d:\work\archives\52053005.html(3799): 月影兵庫    at 2008年10月06日 00:13
d:\work\archives\52054282.html(902): 月影兵庫    at 2008年10月05日 23:00
d:\work\archives\52055292.html(1056): 月影兵庫    at 2008年10月06日 23:55
d:\work\archives\52059638.html(1230): 月影兵庫    at 2008年10月12日 00:33
d:\work\archives\52062503.html(880): 月影兵庫    at 2008年10月15日 06:38
d:\work\archives\52062503.html(1437): 月影兵庫    at 2008年10月15日 23:22
d:\work\archives\52068682.html(886): 月影兵庫    at 2008年10月22日 07:54

|

« テキスト処理の道具達(3):Grep結果から元文書にジャンプ | トップページ | その名はサイコパス »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1109195/25154009

この記事へのトラックバック一覧です: テキスト処理の道具達(4):秀丸の「grepして置換」を使ってみる:

« テキスト処理の道具達(3):Grep結果から元文書にジャンプ | トップページ | その名はサイコパス »