CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。
Section: Utility Commands (1) Updated: May 17 2000 Index JM Home Page roff page 名称 gawk - パターン検索・処理言語 書式 awk [ POSIX or GNU style options ] -f program-file [ -- ] file ... gawk [ POSIX or GNU style options ] [ -- ] program-text file ... 解説 gawk は GNU プロジェクトが実装した プログラミング言語 AWK の処理系です。 本処理系は POSIX 1003.2 コマンド言語とユーティリティ規約に定められた 言語の定義に適合しています。 本バージョンはまた、Aho, Kernighan, Weinberger の著書 The AWK Programmi
このサイトは、もともと作者の自分用メモとして書き始めたものです。書いてあることが全て正しいとは限りません。他の文献、オフィシャルなサイトも確認して、自己責任にて利用してください。 AWK それ自体でプログラムを組むことは少ないが、シェルスクリプト中で引数や文字列処理に使うと便利なものだ。ここでは、筆者がこれまでに BASH や AWK スクリプトの中で使ったり試したことのある処理を、スクリプト例として紹介する。参考になりそうな例があれば随時追加していく。 AWK の正規表現は Perl と同じではないが、事始めとしては Perldoc の perlrequick が役に立つだろう。 意外 ! AWKでは { } が使えない !? ファイルのタイムスタンプを求める ファイルからコメント行と空行以外の内容を読み込む(出力レコードセパレータ変数 ORS) パスワードファイルから特定のフィールドだ
awkという、古くからのスクリプト言語がある。(1977年生まれ。読み方は「オーク」である。エイ・ダブリュ・ケイではない)man awkをPDFに変換してみると、たったの3ページ強しかない。 $ man -t awk|pstopdf -i -o ~/Downloads/awk.pdf とてもシンプルな言語仕様ではあるが、awkには必要十分な表現力がある。特にテキストを処理する場面においては、最小限のシンプルな記述で、気の利いた処理を素早くこなす。無駄のないawkワンライナーを見ると、ある種の感動を覚える。awk以降に生まれたスクリプト言語は、少なからずawkの影響を受けていると思われる。 awkを知ることで、間違いなく幸福度は上がると思う。いつかきっと「知ってて良かった」と思える時が来るはず。もっともっと、awkを知りたくなってきた。 基本動作 awkの基本動作は、とってもシンプルである。
awk(と他のコマンド)ユーザーがPerlワンライナーを覚えるとうれしいこと↓↓ -aオプションでawkと似たような書き方ができる(awkとの比較を参考) カラム1とカラム2を表示 awk '{print $1, $2}' perl -waln -e 'print $F[0], $F[1]' awkよりperlの方が速い場合がある 例えば-aオプションを使わないとき、$F[0]などをレコードごとに生成しないのでperlの方が速く実行できる場合がある(awkはレコードごとに$1などを生成する) awk 'BEGIN{sum=0};{sum+=1};END{print sum}' file.txt perl -wln -e 'BEGIN{my $sum=0}{$sum+=1}END{print $sum}' file.txt 正規表現をperlだけ覚えればいい(awk, sed, grepのコ
外部コマンドは遅い。できるだけbuilt-inコマンドを使おうって話。 シェルでよくあるんだけど、ある区切りの○番目を取ってきたい、っていう場面で foo="aaaa,bbbb,cccc" bar=`echo $foo | awk -F, '{print $2}'` ってやる時がある。 けど、これ、むちゃくちゃ無駄。一回しか実行されないなら大したボトルネックにはならないが、ループの中で使うと酷い事になりがち。 awkの場合 #!/bin/sh typeset -i i=0 while (( i < 10 )) do echo "aaaa,bbbb,cccc" | awk -F, '{print $2}' >/dev/null i=$(( i + 1 )) done $ time ./awkTest.sh real 0m0.129s user 0m0.031s sys 0m0.098s re
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く