ラベル AWK の投稿を表示しています。 すべての投稿を表示
ラベル AWK の投稿を表示しています。 すべての投稿を表示

2012年10月8日月曜日

Gawk4 Windows版実行ファイルの入手方法 - AWK

AWKを入手する
(追加情報が有りましたら、随時更新します)

Gawk 4.0.1の Windows版バイナリが公開されていました。
公開しているのは、ドイツの方みたいです。

o Gawk3 の入手方法は「Windows 版gawk, mawkを入手する


** 実行ファイルの入手方法
o ▽Klabaster-Homepageのダウンロードページ にて、Gawkの最新版。バージョン4.0.1 の Windows版が公開されていました。

o 辿り方は、
    + 中央やや下にあるダウンロード(Downloads)欄にある、(gawk32.zip)が含まれているリンクをクリック
    + ダウンロードしたzipファイルを展開(解凍)。ウイルスチェックも忘れずに。
    + そして、展開(解凍)したフォルダーの中にある gawk.exe が実行ファイルです。

o 使用上の注意点としては、
    + 英語版と書かれています。
    + 日本語対応状況については、未確認です。


**** メモ
o Gawkのバージョン4に関する差分情報は、AWK Users JPの次のページが詳しいです。
    + ▽【緊急特集】最新の gawk 4.0.0 を追え
    + 【緊急特集】gawk 4.0.1 リリース間近!
o 注目点は、
    バージョン 4.0.0では、関数 gsub / sub の仕様変更もあったのですが、
    バージョン 4.0.1で、この仕様は元に戻されました。
    ですので、Gawk 4を使うのであれば、バージョン 4.0.1の方がおすすめです。


==
関連ページ:
    ▼AWKを入手する
    ▼AWK
    ▼制作メモ
    > Windows 版gawk, mawkを入手する
    Windows版nawkを入手する
    Windows版nawkを、自分でビルドする
    +
    ▼AWKプログラムを動かす

2011年8月10日水曜日

正規表現で出来る事 - AWK

AWKの正規表現
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
正規表現を使うと、文字列の複雑な比較をする事が出来ます。
また、AWKの関数と組み合わせると、文字列の一部を置き換える事も出来ます。


**** 正規表現で出来る事
o 条件に一致する行を取り出す事が出来ます。
--------
/ミク/ {
  print "ミクさん発見 = " $0;
}
--------

    + 最後のセミコロンは付けなくても大丈夫です。(C言語の書き方に合わせました。)
    + また、1行で書く事も出来ます。

o 文字列と比較する事が出来ます。
--------
{
  if ($0 ~/ネギ/) {
    print "ミクさんへのお土産発見 = " $0;
  }
}
--------


o 関数を併用すると、文字列の一部を置き換える事も出来ます。
--------
{
  gsub(/ミクちゃん|ミク様/, "ミクさん"); # 文章中の敬称を「ミクさん」に統一します。
  print $0;
}
--------



**** メモ
o 上記のAWKプログラムは、もっと短く書く事も出来ます。
o 例えば、最後の例は、次のように書く事も出来ます。
--------
gsub(/ミクちゃん|ミク様/, "ミクさん") || 1
--------

    + 最後の「 || 1」の意味は「 or 1」(= 常に真)
    + 短くても動く理由は、「AWKで最も短いプログラム


**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3
o original = the one true awk(updated May 1, 2007)


==
関連ページ:
    ▼AWKの正規表現
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > AWKの正規表現で使う書式
    正規表現を書く事が出来る場所
    文字列中で使用出来る特殊文字

2011年8月9日火曜日

AWKの正規表現で使う書式 - AWK

AWKの正規表現
正規表現に使用出来る記号の一覧です。

o 処理系毎の動作について、ぼちぼちと確認している所です。
o 動かないケースなどが見つかりましたら、このメモを更新する予定です。

AWKの正規表現で使う書式(暫定版)
書き方意味
文字の表現
/正規表現を囲う文字。
/ミクさん/ のように使います。
\c文字c。
正規表現で使用する記号自身を示したい時に使います。
.改行以外の1文字。
.」キー(= ピリオド)の場所は、「M」の2つ右。
[abc]abcのどれか1文字。
[^abc]「abcと改行」以外の1文字。
^」キーの場所は、数字の「0」の2つ右。
位置の表現
^行頭、もしくは文字列の先頭。
^」キーの場所は、数字の「0」の2つ右。
$行末、もしくは文字列の最後。
「$」キーの場所は、「Shift」キーを押しながら数字の「4」。
組み合わせ方
(r)グループ化。カッコ内を1つの塊にします。
括弧の場所は、「Shift」キーを押しながら数字の「8」もしくは「9」。
r1|r2r1 または r2の時(= r1 or r2)。
「|」キーの場所は、シフトキーを押しながら数字の「0」の3つ右。
r1r2r1 の後に r2 が続いた時。
r+rが連続して1回以上登場した時。
rが1回だけ登場した時も、真です。
r*rが連続して0回以上登場した時。
rでは無かった時も、真です。
r?rが1回以下の時。
連続で登場すると、偽になります。
o Gawk 4.0では、書き方が更に追加されています。


**** メモ
o 文字列中で使用出来る特殊文字のほとんどは、正規表現内でも使用する事が可能です。
    + 詳しくは、「文字列中で使用出来る特殊文字


==
関連ページ:
    ▼AWKの正規表現
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > 正規表現を書く事が出来る場所
    文字列中で使用出来る特殊文字

2011年7月29日金曜日

改行コード。Windows / UNIX / Mac の違いについて - AWK

AWKの入出力とコマンド実行機能
システムが異なると、改行コードも異なります。
他のコンピューターで作ったテキストファイルを読み書きするような時には、改行コードにも気を配ります。


**** 改行コードの規格
o 以下、バイナリモードで読み書きする時の書き方です。
o Windowsの改行コードは「\r\n」です。16進数で、0x0D0A
o UNIXの改行コードは「\n」です。16進数で、0x0A(Mac OS Xも、多分これです。)
o 古いMac OSの改行コードは「\r」です。16進数で、0x0D

o HTTPの通信で使う(推奨の)改行コードは「\r\n」です。16進数で、0x0D0A
    + 但し、改行コードの「\n」だけを書くようなサンプルプログラムも多いです。


**** 使用例
o 実行コマンド
--------
gawk -v BINMODE=2 -f a.awk > out.txt
--------


o AWKプログラム a.awk
--------
BEGIN {
  print "Windowsの改行コードは\\r\\nです。ミクさん。\r\n";
}
--------



**** メモ
o 通常は、「\n」が改行の意味を持ちます。
    + 利用環境で使われている改行コードを、自動的に追加してくれます。
o 改行コードを自分で正確に指定したい時は、変数 BINMODEを使って、バイナリモードでファイルを開きます。
    + 変数 BINMODEは、Gawkとmawkでサポートしている機能です。


==
関連ページ:
    ▼AWKの入出力関数とコマンド実行機能▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > GawkでUTF-8のファイルを読み込む時の注意点
    Gawkで、UTF-8のファイルからBOMを除去する
    getline = ファイル(やパイプ)から1行読み込む

2011年7月28日木曜日

AWKの正規表現 - AWK

AWKの文字列操作機能
AWKの関数、変数、制御文
正規表現で出来る事
AWKの正規表現で使う書式
正規表現を書く事が出来る場所
文字列中で使用出来る特殊文字
----
正規表現を使うと、文字列を検索したり置き換える事が簡単に出来ます。

o ここでは、Windows版のAWK処理系で確認した結果を纏めます。


==
関連ページ:
    ▼AWKの文字列操作関数と関連機能▼ABC順
    ▼AWKプログラムを書く
    ▼AWK
    ▼制作メモ