ラベル 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
    ▼制作メモ

2011年7月27日水曜日

正規表現を書く事が出来る場所 - AWK

AWKの正規表現
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○nawk ○awk
正規表現を仮定している場所に書く事が出来ます。
また、条件を書く事が出来る場所でも、正規表現を使う事が出来ます。

o 以下、Windows版のAWKの場合です。


**** 正規表現を書く事の出来る場所
o パターンの条件を書く所(括弧({)の手前)
    + 正規表現だけを書く事も出来ますし、条件式の形で書く事も出来ます。
o 文字列操作関数で、正規表現を仮定している引数
    + match関数の第2引数
    + sub関数の第1引数
    + gsub関数の第1引数
    + gensub関数の第1引数(Gawk専用)
o switch文のcase句に書く値(Gawk専用)
o 条件式を書く所(= 演算子を併用して、式の形で書きます。)
    + if文に書く条件式
    + for文に書く終了条件
    + while文に書く終了条件
    + do文のwhile句に書く終了条件
    + 条件演算子(?:の、?の直前に書く条件式


**** メモ
o この他にも発見しましたら、このメモを更新します。


**** 確認した処理系
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 nawk = the one true awk(updated May 6, 2011)
o Nawk for Windows 2008.02.08配布版(配布サイトの表示は 2007.10.23)
o original = the one true awk(updated May 1, 2007)


==
関連ページ:
    ▼AWKの正規表現
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > 文字列中で使用出来る特殊文字
    +
    AWKの正規表現で使う書式
(2011年7月28日追加。確認した処理系)

Windows版nawkを入手する方法 - AWK

AWKを入手する
UNIXで、nawkを主に利用している方向けの情報です。

o Windows版のnawkを直ぐに入手したい方は、Nawk for Windows が便利です。
o 最新版の nawkを試したい方は、 Visual C++を使ってビルドする方法があります。(無料で行う事も出来ます。)


**** 手順
o 実行ファイルを直ぐに入手したい方は、下記の手順で入手します。
o 最新版の nawk を自分で作る方法は「Windows版nawkを、自分でビルドする方法」

** Nawk for Windowsを入手する方法
o Nawk for Windowsのホームページを開きます。
o 見出しが Download と書かれた所を見つけます。
    + リンクが6つ位、縦に並んでいる所です。
o 実行ファイルだけ欲しい時は、「Binaries」の「Zip」リンクをクリックします。
    + インストールしたい時は、「Complete package, except sources」の Setup リンク
    + この時は、普通の手順でインストールします。
o 「Binaries」から入手した時は、Zipファイルを展開(= 解凍します。)
o bin サブフォルダの下にある、nawk.exe が nawkの実行ファイルです。
    + 必要に応じて、使いたい場所に移動、もしくはコピーして使います。


==
関連ページ:
    ▼AWKを入手する
    ▼AWK
    ▼制作メモ
    > Windows版nawkを、自分でビルドする
    AWKプログラムを他の言語に変換する方法。AWK to Perl, C, C++
    Windows版AWKの配布元一覧(awk, mawk, Gawk)

Windows版nawkを、自分でビルドする方法 - AWK

AWKを入手する
Visual C++をインストールしている方は、Windows版nawkの実行プログラムを簡単に作る事が出来ます。
nawkを多用していて、Windows上でも使いたくなった方は、ご参考にどうぞ。

o nawkは、AWK言語の設計者の1人が作っている、オリジナルAWKの改善版です。
o Visual C++ 2010 Expressは、マイクロソフト社から無料でダウンロード出来ます。


**** 手順(= Visual C++ 2010 Expressの場合)
o nawk本家のページから、最新版のソースコードを入手します。
    + 「zip file」と書かれたリンクをクリックして、ダウンロードします。
o ダウンロードした zipファイルを展開(= 解凍)します。
    + 「awk」という名前のフォルダーが出来ます。
o 次に、Visual C++のコマンドプロンプトツールを開きます。
    + スタートボタンから、「すべてのプログラム」-「Microsoft Visual Studio 2010 Express」-「Visual Studio コマンド プロンプト (2010)」
o カレントディレクトリを移動します。
    + 「cd /d 移動先のフォルダー名」のように入力して、Enterキー。
    + フォルダー名の入力は、awkフォルダーをドロップする方法が簡単です。
o ビルドするバッチファイルを実行します。
    + 「buildwin.bat」と入力して、Enterキー。
    + ファイル名の入力は、エクスプローラーから、ファイルをドロップする方法が簡単です。
o いくつか警告が出ますが、最後に「コードを生成中...」という文字が出たら、成功します。
o バッチファイルの実行が終わりましたら、nawkを取り出します。
    + awk フォルダーの中にあるawk.exeです。


**** メモ
o nawkの使い方は、オリジナルAWKと同じです。
o なお、詳細な動作確認はしていません。漢字の扱い等も未確認です。
o 古いバージョンで良ければ、Nawk for Windowsのバイナリファイルを使う方法が簡単です。


**** 使用したバージョン
o nawk ソースコード。2011年5月6日版
o Microsoft Visual C++ 2010 Express
o Windows XP Service Pack 3


==
関連ページ:
    ▼AWKを入手する
    ▼AWK
    ▼制作メモ
    > AWKプログラムを他の言語に変換する方法。AWK to Perl, C, C++
    Windows版AWKの配布元一覧(awk, mawk, Gawk)
    AWK本家のホームページの場所

2011年6月15日水曜日

AWKの関数名と変数名を区別する方法 - AWK

AWKのパターンと制御文
AWKの命名規則を覚えておくと、AWKのプログラムを書く時に、間違いが少なくなります。


** 手順
o 組み込みの関数名は、全て小文字です。英小文字から始まります。
    + 多くの場合、C言語の組み込み関数と同じ名前が使われています。
    + 関数名の例 : int / print / atan2
o 組み込みの変数名は、全て大文字です。英大文字、もしくは「$」から始まります。
    + 変数名の例 : FS / NF / $0 / $1

o 後は、自分で作った(もしくは取り込んだ)関数や変数の名前を区別するだけです。


**** メモ
o AWKの変数は、基本的にグローバル変数です。
    + 変数に値を代入すると、その値をどこからでも使用する事が出来ます。
    + ローカル変数を使いたい時は、「ローカル変数を使う方法
o 自分で作る関数や変数についても、命名規則を作っておくと区別し易いです。


==
関連ページ:
    ▼AWKのパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > ローカル変数を使う
    AWKプログラム実行時に変数を設定する
    AWKで入力ファイルの指定を不要にする
(2011年6月30日追加。メモ欄にて、自作関数や変数の命名)

2011年5月11日水曜日

/dev/null = 常に空のファイル名(Gawk専用) - AWK

AWKの入出力とコマンド実行機能
○Gawk on Windows ○Gawk ×mawk32 ×Mawk ×awk
常に空のファイルです。

o 出力を一時的に、どこにも送りたくない時に便利です。
o Gawk限定の機能です。


**** 書式
--------
"/dev/null"
--------

o 文字列の形で指定します。


**** 使用例
--------
BEGIN {
  print "空のファイルに出力します。上書きモードの書き方。" > "/dev/null";
  print "空のファイルに出力します。追加モードの書き方。" >> "/dev/null";

  devnull = "/dev/null";
  print "変数にして指定する事も出来ます。ミクさん。" > devnull;
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


**** 機能
o 常に空のファイルを示すファイル名です。
o Gawk限定の機能です。


**** メモ
o 他の処理系の場合は、コマンドプロンプト画面やシェル側で対応する方法が簡単です。
    + 実在するファイルに書き出して、後でそのファイルを削除する方法
    + 表示を全部消したい時は、常に空のファイルに書き出す方法
        + Windowsの場合は「NUL = 表示結果をどこにも書き込まない、特殊なファイル


**** 確認した処理系
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の入出力関数とコマンド実行機能▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > AWKプログラムで使用可能な特殊ファイル名。標準入力、標準出力、標準エラー出力など

/dev/stdout = 標準出力を示すファイル名 - AWK

AWKの入出力とコマンド実行機能
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
AWKでは、標準出力をファイル名として指定する事が出来ます。

o print文の出力先を一時的に標準出力に切り替えたい時に、便利です。
o 出力先を指定せずにprint文やprintf文を使うと、AWKは標準出力に出力します。


**** 書式
--------
"/dev/stdout"
--------

o 文字列の形で指定します。


**** 使用例
--------
BEGIN {
  print "標準出力に出力します。1行目はファイルがあれば上書き" > "/dev/stdout";
  print "標準出力に出力します。2行目は追加書き" > "/dev/stdout";

  print "標準出力に出力します。ファイルがあれば後ろに追加" >> "/dev/stdout";
  print "標準出力に出力します。2行目は追加書き" >> "/dev/stdout";

  stdout = "/dev/stdout";
  print "変数にして指定する事も出来ます。ミクさん。" > stdout;
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


**** 機能
o 標準出力を示すファイル名です。


**** メモ
o Gawkの場合は、"/dev/fd/1" という書き方も可能です。
o Windows のコマンドプロンプト画面から標準エラー出力だけ取り出す方法は「標準出力と標準エラー出力。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の入出力関数とコマンド実行機能▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > /dev/stderr = 標準エラー出力を示すファイル名
    /dev/null = 常に空のファイル名
    AWKプログラムで使用可能な特殊ファイル名。標準入力、標準出力、標準エラー出力など

2011年3月4日金曜日

AWKで入力ファイルの指定を不要にする方法 - AWK

AWKプログラムを動かす
AWKのパターンと制御文
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
AWKプログラムの書き方を工夫すると、入力ファイルの指定が無くても動かす事が出来ます。


**** 原理
o 次の時、AWK は入力ファイルが無くても、データ入力を要求せずに動きます。
    + BEGIN パターン以外のパターンを書かない時。
    + もしくは、BEGIN パターン内で入力ファイルを設定した時。
o ですので、入力ファイルの指定を不要にしたい時は、この条件のどちらかを満たすように書きます。


**** 手順
o BEGIN パターンだけ書く方法
--------
BEGIN {
    print "眠れない時は、";
    for (i = 1; i <= 39; ++i) {
        print "ミクさんが " i "人。";
    }
}
--------

    + 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。

o 入力ファイルをプログラムで追加する方法
--------
BEGIN {
    ARGV[ARGC++] = "ミクさんの食べ物リスト.txt";
}
{
    print $0;
}
--------

    + 詳しくは、「AWKの入力ファイルを、AWKプログラムの中で追加、削除(= キャンセル)する方法


**** メモ
o BEGIN パターンだけの使い方は、特に、大量のテストデータを作る時に便利です
    + 問題が起きた時はメモ帳でも修正出来ますし、持ち運びも簡単です。
    + テスト終了後、テストデータは削除してしまっても、後で再作成出来ます。
o プログラムが途中で止まっているように見える時は、試しに文字を入力してみます。
    + 文字が入力出来る時は、AWKが、画面からのデータ入力を要求しています。
    + そのような時は、「Ctrl」キーを押しながら「Z」キーを押すと先に進みます。
    + 詳しくは、「入力ファイルを手入力する方法


**** 確認した処理系
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プログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > AWKの入力ファイルを、AWKプログラムの中で追加、削除(= キャンセル)する
    入力ファイルを手入力する
    AWKPATH = コマンドでAWKファイル名を指定する時、ファイルの場所を省略する(Gawk, mawk32専用)
    BEGIN = 最初に実行する

2011年3月3日木曜日

AWKの入力ファイルを、AWKプログラムの中で追加、削除(= キャンセル)する方法 - AWK

AWKプログラムを動かす
AWKのパターンと制御文
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
AWKの入力ファイルは、AWKプログラムの中で追加、変更、削除(= キャンセル)する事が出来ます。
変数 ARGC と ARGV を使います。


**** 手順
o 3つの手順について纏めました。
    + 1. 入力ファイルを後で追加する方法
    + 2. 読み込み予定の入力ファイルを削除(= キャンセル)する方法
        + (この手順を応用すると、入力予定のファイル名を変更する事も出来ます。)
    + 3. 後ろに続く入力ファイルをまとめて削除(= キャンセル)する方法

o 1. 入力ファイルを後で追加する方法
    + 次の書き方が便利です。「 ARGV[ARGC++] = "ファイル名" 」
    + ARGV[ARGC] に追加したいファイル名を入れた後に、ARGC に 1 を加えます。
--------
BEGIN {
    ARGV[ARGC++] = "ネギパーティ参加者.txt";
    ARGV[ARGC++] = "ネギパーティ参加者その2.txt";
}
{
    print "参加者 :" $1 "さん";
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


o 2. 読み込み予定の入力ファイルを削除(= キャンセル)する方法
    + 次のように書きます。「 ARGV[消したいファイルの順番] = "" 」
--------
BEGIN {
    ARGV[1] = ""; # 最初に読み込むファイルをスキップします。
}
{
    print "参加者 :" $1 "さん";
}
--------

    + ARGV[1] に別のファイル名を指定すると、AWKは指定したファイルを読み込みます。

o 3. 後ろに続く入力ファイルをまとめて削除(= キャンセル)する方法
    + 次の書き方が便利です。「 ARGC = (合計ファイル数 + 1) 」
--------
BEGIN {
    ARGC = 2; # ファイルを最初の1つだけ読み込みます。
}
{
    print "参加者 :" $1 "さん";
}
--------

    + この他に、2番目の方法を使って、ARGV のファイル名を1つずつ消す方法もあります。


o 詳しい情報はこちらです。
    + ARGC = ARGVに入っている要素の個数
    + ARGV = AWK起動時に指定した入力ファイル名とコマンド名
    + ARGIND = ARGVにおける現在入力中ファイルの位置 (Gawk専用)


**** メモ
o BEGIN だけでなく、ファイル読み込み中に変更する事が出来ます。
    + 読み込み中のファイルを削除した時の動作は、処理系によって異なります。
    + 詳しくは、「ARGC = ARGVに入っている要素の個数
o 現在のファイルの位置を調べたい時は、変数 ARGINV のメモ「ARGIND = ARGVにおける現在入力中ファイルの位置」(Gawk専用)をどうぞ。
    + この変数は Gawk限定ですが、メモ欄に、mawkなどでも動かす為の情報を載せました。


**** 確認した処理系
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プログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > 入力ファイルを手入力する
    AWKPATH = コマンドでAWKファイル名を指定する時、ファイルの場所を省略する(Gawk, mawk32専用)
    BEGIN = 最初に実行する

2011年2月6日日曜日

AWKの配列操作関数と関連機能(ABC順) - AWK

AWKの関数、変数、制御文(ABC順)
A - asort asorti
D - delete
L - length
S - SUBSEP
--------
o 先頭の文字で行を分けました。
o リンクを押すと、to_dkのメモをご覧になれます。


==
関連ページ:
    ▼AWKの関数、変数、制御文。ABC順▼目的別
    ▼AWK
    ▼制作メモ
    ▼AWKの配列操作関数と関連機能(目的別)

AWKのパターンと制御文(ABC順) - AWK

AWKの関数、変数、制御文(ABC順)
--------
o 先頭の文字で行を分けました。
o リンクを押すと、to_dkのメモをご覧になれます。


==
関連ページ:
    ▼AWKの関数、変数、制御文。ABC順▼目的別
    ▼AWK
    ▼制作メモ
    > ▼AWKの配列操作関数と関連機能(ABC順)
    ▼AWKのパターンと制御文(目的別)

AWKの入出力関数とコマンド実行機能(ABC順) - AWK

AWKの関数、変数、制御文(ABC順)
記号 - $0 $1
A - ARGV
B - BINMODE
C - close
E - ERRNO
F - fflush FIELDWIDTHS FILENAME FNR FS
G - getline
N - NF NR
O - OFS ORS
P - print printf
R - RS RT
S - system
--------
o 先頭の文字で行を分けました。
o リンクを押すと、to_dkのメモをご覧になれます。


==
関連ページ:
    ▼AWKの関数、変数、制御文。ABC順▼目的別
    ▼AWK
    ▼制作メモ
    > ▼AWKのパターンと制御文(ABC順)
    ▼AWKの入出力関数とコマンド実行機能(目的別)

AWKの時刻取得関数と関連機能(ABC順) - AWK

AWKの関数、変数、制御文(ABC順)
--------
o 先頭の文字で行を分けました。
o リンクを押すと、to_dkのメモをご覧になれます。


==
関連ページ:
    ▼AWKの関数、変数、制御文。ABC順▼目的別
    ▼AWK
    ▼制作メモ
    > ▼AWKの入出力関数とコマンド実行機能(ABC順)
    ▼AWKの時刻取得関数と関連機能(目的別)

AWKの文字列操作関数と関連機能(ABC順) - AWK

AWKの関数、変数、制御文(ABC順)
--------
o 先頭の文字で行を分けました。
o リンクを押すと、to_dkのメモをご覧になれます。


==
関連ページ:
    ▼AWKの関数、変数、制御文。ABC順▼目的別
    ▼AWK
    ▼制作メモ
    > ▼AWKの時刻取得関数と関連機能(ABC順)
    ▼AWKの文字列操作機能(目的別)

AWKの数値計算関数と関連機能(ABC順) - AWK

AWKの関数、変数、制御文(ABC順)
記号 - ?:
A - and atan2
C - compl CONVFMT cos
E - exp
I - int
L - log lshift
O - OFMT or
R - rand rshift
S - sin sqrt srand strtonum
X - xor
--------
o 先頭の文字で行を分けました。
o リンクを押すと、to_dkのメモをご覧になれます。


==
関連ページ:
    ▼AWKの関数、変数、制御文。ABC順▼目的別
    ▼AWK
    ▼制作メモ
    > ▼AWKの文字列操作関数と関連機能(ABC順)
    ▼AWKの数値計算関数と関連機能(目的別)

2011年2月2日水曜日

AWKプログラムを簡単に書く方法 - AWK

AWKのパターンと制御文
AWKプログラムを書く
o パターンを3種類覚えます。
o そして、必要な機能を探して、パターンの中に並べます。
o 上手に書けたと思ったら、実行してみます。


**** 覚えるパターン 3つ
o BEGIN パターン = プログラムの先頭で「1回だけ」実行したい時に、追加します。
--------
BEGIN {
  # ファイルを読み込む前に実行します。
}
--------

    + # の行は、コメントです。
    + 実際には、# の行に、そこで行いたい事を書きます。

o 先頭に何も書いていないパターン = ファイルを1行ずつ読み込みたい時に、追加します。
--------
{
  # 1行毎に実行します。くるくる回ります。
}
--------


o END パターン = プログラムの最後に「1回だけ」実行したい時に、追加します。
--------
END {
  # ファイルを全部読み込んだ後に実行します。
}
--------



**** 実行例
o ファイル sample.awk
--------
{
  print $0 "、おはようございます。";
}
END {
  print "皆さん、今日もよろしくお願いします。";
}
--------

    + 行末のセミコロンは無くても動きます。C言語風にしてみました。
    + $0 には、読み込んだ 1行分のデータが入っています。
    + ファイル名の後ろに拡張子(.txt など)が表示されていない場合は、「ファイルの拡張子を変更可能にする方法

o ファイル in.txt
--------
ミクさん
リンちゃん
レン君
ルカ様
--------


o 実行コマンド
--------
gawk -f sample.awk in.txt
--------

    + Windowsの場合、gawk の部分は、gawk.exe を呼び出すよう、必要に応じて書き換えます。
    + 詳しい動かし方は、「AWKプログラムを別ファイルに書いて実行する方法


**** メモ
o この手順を覚えたら、後は、必要な機能を探して、パターンの中に並べるだけです。
o パターンは、これらの他にもあります。3つのパターンに慣れてきたら、他のパターンも覚えてみます。


**** 確認した処理系
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のパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > AWKで最も短いプログラム
    AWKプログラムの基本パターン
    AWKの関数名と変数名を区別する方法
    タブ区切りでファイルを読み込む