preタグで囲ってもライブドアブログが改行コード¥n等をメタ文字として扱うので一部全角文字で記しています。

ここんところawk熱が続いています。と言ってもawk言語の理解を深めるというよりは、Cygwin環境においての最小限のスキルでどう活用するかって方法の方に興味が向いています。

例えばこちらのエントリーページから、使っている画像のURLをゲットしようとした場合の処理です。

正直に書くブログ : awkとsedでテキスト加工の自動化

ブラウザの操作でもwgetでも良いので、ローカルにソースを保存して、テキストエディタで開いてみて下さい。見慣れている人にはなんてことないと思いますが、そうでは無い人にはこんなんどないすんねん!という感じかも知れません。

しかしこれ、実は規則性があるんですね。HTMLによるマークアップ記述にはタグという概念があり、<html>から</html>という感じで囲むルールがあります。この<>というルールを利用すると、awkで処理することが容易になります。まずその為の下ごしらえをします。

$ tr -d '¥n' < source.txt > mod1.txt

trコマンドで改行コード(¥n)を削除(-d)して、mod1.txtへ出力しています。これで改行の無い連なったソースが出来上がりです。Webブラウザは改行なしでも問題なく解釈してくれるのでページは開きます。テキストエディタで開くと改行はもちろん無く、TABやらスペースを使ったインデントやらでぐちゃぐちゃに見えますがPCが認識できるソースは維持しており破綻はしていません。

$ sed 's/</¥n</g' mod1.txt > mod2.txt

sedによる置換を実施します。"<"を"¥n<"に置換して改行(¥n)で区切るのが上記です。gオプションを忘れるとsedは最初にマッチした1箇所しか処理しないのでオプションを付けましょう。

出来上がったmod2.txtをテキストエディタで開いてみるとタグ毎に改行で分割出来ているのが分かるハズです。ここまで出来ると欲しい情報をawkで抽出する準備OKって事になります。

後はawkで処理する内容の記述次第なので、この記事にくどくど記すよりは、過去記事を呼んでいただきながら自分の求めている処理を独自に記していただくのが良いでしょうね。てことでコレ移行は省略しときます。

Gistにスクリプトを上げておきます。

gist:3dfb3f2256957852355c