CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。
![これは強力! AWKとパイプの新しい関係 ~ 時刻を取得する関数、Socket通信、双方向パイプ](https://cdn-ak-scissors.b.st-hatena.com/image/square/8b2049ea252ffc8edef6de1cb71994c8747e2709/height=288;version=1;width=512/https%3A%2F%2Fcodezine.jp%2Fstatic%2Fimages%2Farticle%2F8322%2F8322_arena.png)
AWKプログラム 「AWKプログラム」は、「パターン-アクション規則」と「関数定義」の並びである。 パターン{アクション} パターン{アクション} ... function 名前(引数の並び){ 文 } function 名前(引数の並び){ 文 } ... パターン-アクション規則や関数定義の前後に空行を挿入してもよい。関数定義はどこに記述してもよい。 入力レコードをひとつ読む度に、パターン-アクション規則のパターンが順に検査される。パターン-アクション規則は、パターンが真となるレコードに対して、対応するアクションが実行される。 パターンあるいは{アクション}のいずれかを省略することができる。パターンを省略するとすべてのレコードにアクションが実行され、{アクション}を省略するとパターンが真となるレコードを表示する。 パターン 「パターン」は次のいずれかである。 BEGIN END 式 /
AWK リファレンス AWK とは? AWK はフィルタリングによく使用されるコマンドであるが、同様にしてフィルタリングに使用される grep や cut と決定的に違うところは、AWK 自体が独立した一つのスクリプト言語であるということだ。つまり、AWK は正確にはコマンドではなく、AWK スクリプト・インタプリタである。 例えばテキストから 1 フィールド目を抽出する場合には、awk '{ print $1 }' と実行するが、ここで引数として AWK に渡している { print $1 } の部分が AWK スクリプトのソースになっている。 ちなみにこの { print $1 } は「全ての行に関して 1 フィールド目を標準出力に出力せよ」という意味になる。 この AWK は Perl などといった他のスクリプト言語ほど高機能ではないが、単一のテキストファイルや標準入力からのテキスト
Effective AWK Programming A User's Guide for GNU Awk Edition 1.0.4 April, 1999 Arnold D. Robbins はじめに awkとgawkの歴史 The GNU Project and This Book Acknowledgements Introduction Using This Book Dark Corners Typographical Conventions 例で使用するデータファイル Getting Started with awk A Rose By Any Other Name awkプログラムの実行の仕方 使い捨ての一発awkプログラム 入力ファイルなしのawkの実行 長いプログラムを実行する 実行可能なawkプログラム awkプログラム中のコメント 非常に単純な例 二つのルールを持つ例
ここはテキスト処理のテクニックをみがくための遊園地です。誰でも、コンピュータを触り始める前は、何かすごい、魔法の箱がうちにやってきたように考えて期待するもんですが、いざ使い始めてみると、こんなこともできん、あれも無理、ということが、いやというほどわかってくる。その結果、多くの場合、期待した魔法の箱は、早々と、単なるゲーム機や文章の清書機といういわゆるワープロ専用機の代替品になるのは、まだいいほうで、年に一回の年賀状印刷機になったりします。いわばお高くとまった料理店みたいなもんで、メニューにないものは一切出しません、と傲慢に構えているのがコンピュータの正体だと、だんだんわかってくるわけです。 プログラミングは、いわば、メニューにないものをコンピュータにムリヤリやらせる方法です。これまでは、エラそうに構えていた料理店の店主に、お客の要求に合わせて料理をださせる方法だといってもよいでしょうね
インクリメント演算子は 2 通りの使い方がある。pre-increment は上のように変数の値を 1 だけ増減するものであり,(++変数)という式の結果はその変更後の値になる。従って,x = 3 のとき,a = ++x という式があると,この式の実行後は a = x = 4 になっている。 もう 1 つは,post-increment で,変数の後に ++ や -- が付く場合である。このとき変数は前の場合と同様に1増加させられるが(変数++)という式の値は変更前の値になる。従って,x = 3 のとき,a = x++ という式があると,この式の実行後は a = 3,x = 4 になっている。 代入演算子 なお,以下の記述で y は任意の数値に変換できる内容を持つ式でよい。また,x = x * (y) などと,余分な ( ) が付いているのは, x *= y+1 は x = x*y+1 で
この文書は書きかけです ここでは nawk (new awk) で使用可能な命令で記述しています。 gawk (GNU awk) を使うことで、さらに効率よい記述を行うことができますが、nawk の文法で覚えておくと全ての awk で使うことができます。 print 文 表示は print 文です。 print "Hello World!"; コメント # 以降がコメントになります。 スクリプトの実行 以下のように '-f' に続いてスクリプトを指定します。 nawk -f foo.awk 複数の awk スクリプトを指定することもできます。 nawk -f foo1.awk -f foo2.awk -f foo3.awk スクリプトを直接指定できます。 # "Hello World" と表示 nawk 'BEGIN { print "Hello World" }' BEGIN, END,
awkという、古くからのスクリプト言語がある。(1977年生まれ。読み方は「オーク」である。エイ・ダブリュ・ケイではない)man awkをPDFに変換してみると、たったの3ページ強しかない。 $ man -t awk|pstopdf -i -o ~/Downloads/awk.pdf とてもシンプルな言語仕様ではあるが、awkには必要十分な表現力がある。特にテキストを処理する場面においては、最小限のシンプルな記述で、気の利いた処理を素早くこなす。無駄のないawkワンライナーを見ると、ある種の感動を覚える。awk以降に生まれたスクリプト言語は、少なからずawkの影響を受けていると思われる。 awkを知ることで、間違いなく幸福度は上がると思う。いつかきっと「知ってて良かった」と思える時が来るはず。もっともっと、awkを知りたくなってきた。 基本動作 awkの基本動作は、とってもシンプルである。
転置行列は高校の授業でも習いますが、「m 行n 列の行列 A に対して A の (i, j) 要素と (j, i) 要素を入れ替えた n 行 m 列の行列、つまり対角線で成分を折り返した行列のこと」です。 行列計算に限らず、データの X, Y を反転させたい時に使いたいこともあると思いますが、アルゴリズムとしては非常に簡単なものです。 #! /usr/bin/gawk -f # transposed_matrix.awk { for (i = 1; i <= NF; i++) { val[i, NR] = $i; } } END { for (i = 1; i <= NF; i++) { for (j = 1; j <= NR; j++) { printf("%s%s", val[i, j], OFS); } print ""; } } いろいろなデータを用意して試してみてください。 数値
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く