正直に書くブログ

2012年9月からフリーランス活動開始しました。
今後もマニアックでも有用な情報を提供出来るように頑張ります。

awk

Windowsでawkを便利に使う

当サイトではawk言語が非プログラマーのテキスト処理に有効だと言う事を何度か記しています。Windowsユーザーにとって便利な環境をつくれるのに、awkという言語がマイナー(古い)な為に知名度が低く、実際に活用しているのはプログラマー寄りの人ばかりというのが惜しいと思っています。

もっとビジネスシーンでも活躍出来る場が沢山有ることを分かっていただこうと、まずはWindows上で手軽にawkを使うことが出来る様に環境設定する方法を動画にしてYouTubeにアップしました。

動画の掲載はこちらでも可能ですが、ソースコードの記述等、今後の事を考えて自由度が高い自前のブログの方に記事を記していますのでご覧になって頂けたらと思います。



Windowsでawkを便利に使う-1 | S-Factory

Windowsでawkを便利に使う-2 | S-Factory

ドットインストールにawkの動画レッスンがようやく追加されました

このサイトでは度々awkというテキスト処理に有利なスクリプト言語を勧める記事を記しています。私自身がネットショップの商品データを管理する仕事を担当していたこともあり、プログラミングスキルが無くても結果が得られるプログラミング言語(awk)は、非常に魅力のあるツールに違いないと確信していたからです。

先日、ドットインストールからAWKのレッスンを追加しました。というメールが届きました。そう言えばドットインストールがまだテスト運用だった頃、ネットで知り合った人に招待してもらって使えるようになり、要望欄からawkのレッスンを希望したことがあります。その時返事を頂いたのは、「awkは確かに良い言語ですね。検討してみます。」みたいな内容だったと記憶しています。過去メールを探せば残っていると思いますが別に良いでしょう。田口さんが覚えていてくれたのか、また新たに要望が上がったのかは知りませんが、何年越しかの私の要望が取り入れられたと思って満足しておきます(w

さて、ドットインストールのレッスンについてですが、レッスンはMacユーザー向けというか、ドットインストール自体がマックユーザーなので、学習環境もMac OSを前提としています。そこでWindowsユーザーはちょっと読み替える努力を要求されます。ま、通常とは逆なので、Macユーザーが何時もどういう思いをしていたか思い知る良い機会ですね(w

OSS系の言語が多いので、今回のAWKのレッスンもCentOSというLinux環境を使用する前提で進められています。しかしそんな手間をかけなくても、私はWindows環境で容易にawkを使う方法を、過去に何度かこのサイトでご紹介しています。

おーくの友だち

Windowsアプリとしてインストール出来ますので、Windowsならではのマウスで操作するUIの分かりやすさを活用出来ます。もちろんスクリプト部分にはコードを記さなくてはなりませんが、awkのコードは凝ったことをしなければ非常にシンプルで、「え?これだけで良いの?」って思う位簡単に済む事が多いです。

続きを読む

awkの高速処理でCSVからファイル楽々抽出

awkがCSVファイルの編集や、情報抽出に非常に相性の良いツールだという事は、使ってみて初めて理解できることだと思いますので、ここでいっちょ例題というかやってみようと思います。

素材は、日本郵便が提供している郵便番号データとします。全国版をダウンロードして圧縮を解凍し、テキストエディタで開くと12万行以上あることが分かります。

MS-ExcelでもCSVファイルを読み込む事は出来ますが、Excel 2003までは6万数千行までしか読み込めませんので全国分は一度には作業出来ません。Excel 2007以降なら12万行でも読み込めますけどね。最近のバージョンであれば、無料で使用出来るオフィススイートOpenOfficeやLibreOfficeのCalcでも大丈夫です。

ファイルを開けるという話で言えば、表計算でも可能ですが、実際に抽出処理を行うとawkの処理能力の素晴らしさが一気にアピール出来ます。是非とも実際にやってみていただきたいです。

例えば、欲しい列(郵便番号、都道府県、市、町名番地)を抜き出すとしましょう。表計算ならKEN_ALL.CSVを開いて、不要な列を削除して、別名で保存という感じの手作業になると思います。PCのスペックによってはもっさりした動作になるかも知れません。

キャプチャ

awkなら下記のスクリプトを通すだけで一瞬です。

続きを読む

HTMLソースからawkで抽出系処理に際しての下ごしらえ

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

続きを読む

awkとsedでテキスト加工の自動化

さて、昨日awkを久しぶりに使ったのですが、現在勉強中のVisual Studio C#でWindowsアプリとして作ってみようと思っているツールを、awkとsedなら簡単に作れちゃうんじゃないか?って単純ロジックがイメージ出来てしまったので極単純に手続き型っぽくスクリプトに記してみました。全くプログラミングっぽくありません。

ここでネックはWindowsには標準ではawkもsedもコマンドがありません。後からフリーのコマンドをDLしてきてインストールすることも可能なのですが、wgetも使いたいし、ここまで来ちゃうともう煩わしいので、Cygwin(UNIXコマンド集みたいなアプリ)が使える環境でやってみました。

お題は、とあるグラビア画像系サイトからソースをwgetしてきて、ダウンロードリストを作ってしまうところまでとします。ダウンロードリストを元にwgetで画像ファイルをダウンロードする部分もスクリプトに含めれば、完全自動処理が出来てしまいますが、そこは今回の記事の範疇外とします。実際のところダウンロードの処理も自動で行う所まで、結構容易にできちゃいます。(気が向いたら後日記事にします)

画像ファイルが保存されているURLをテキストファイル1つにまとめられたら、そのURLリストをIrvine等のダウンローダーにインポートすれば、後は自動でDL出来ますね。ツールの組み合わせならちょっとした頭の切り替えで容易に実現出来ます。

Cygwinのインストールは楽勝だと思うので、今回は触れません。興味を持った方は是非Cygwinについて調べてみて下さい。Windowsというコンピュータがもっとコンピュータらしく使える上に身近になってくると思います。

ちなみに、Mac OSXはUNIXなので標準で同等のコマンドが使用出来るハズです。保証は出来ませんけど。さあ!Windowsユーザー達よ、Macユーザーに負けてられませんよ(w

続きを読む
記事検索
月別アーカイブ
SEO的な実験
RSS

ブログランキング

track feed 正直に書くブログ
最新コメント
スポンサードリンク
QRコード
QRコード
  • ライブドアブログ