awkメモ書き

AWK言語は、LinuxサーバーのIOをかなり高速に扱えるインタプリタ言語なので、色々な言語から使えるライブラリとして活用できます。
WEBサービスを公開している運営会社でサービス不具合が無いという会社はほとんどないと思いますが、サービス側のプログラムトラブルもそうですが、サーバートラブルというモノも頭がイタイですが存在すると思います。
AWKの利便性
僕の知っている限り、サーバートラブルは機器故障ではなく、圧倒的にデータベーストラブルが多いと認識してます。
一回走り始めるとMySQLなどのSQLサーバーは止められない、ストレージ的な制約を拡張しずらい、プログラムを改修しないとバランシング構成に変更できない。
など、改修コストもトラブルというストレスも計り知れません。
そんな時にこのAWK言語と出会い、SQLを使わずに高速データ処理を行える手段として活用しています。
僕はSQLは嫌いではないですが、拡張性の低いSQLは高アクセスサービスには向かないと思っているので、こういった手段を知っているかどうかでサービスの方向性にフタがされるかどうかが決まります。
是非、手始めに簡単なAWKを覚えてみてはどうでしょうか?
今回はメモ書き程度ですが、次回にでも深いテンプレートなどを紹介したいと思います。
参考ページ
文字列操作(分割)
split(%1,%2,%3);
%1:文字列
%2:split文字
%3:配列格納変数
文字列を部分的に抽出
substr(%1,%2,%3);
%1:文字列
%2:抽出開始番号(1スタート)
%3:抽出する文字数(nullの場合は、文字列の最後まで)
外部ファイルにプログラムを記述
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ awk -f file.awk %load-file% # file.awk BEGIN{ # 初回処理 FS:","# レコードのsplit文字列 } { # メインプログラム } END{ # 終了処理 } |
コマンドラインからメインプログラムに値を受け渡す方法
1 2 |
# hoge変数に123を代入してからfile.awkを実行する。 $ awk -v hoge=123 -f file.awk %load-file% |