2010年7月2日金曜日

fflush = 出力バッファーを空にする - AWK

AWKの入出力関数とコマンド実行機能
○Gawk on Windows ○Gawk ○mawk32 △(パイプ不可)Mawk ○awk
出力バッファーの内容を、全てファイルに書き出します。

**** 書式
--------
fflush( 開いているファイル名 )
--------

o 開いているファイル名 -- 入出力時に指定した、ファイル名や(パイプに使った)コマンド名です。
   + AWKプログラム内での出力先パイプ指定は、サポートしていない処理系があります。
o 戻り値 -- 閉じるのに成功したら 0 / 失敗したら -1


**** 使用例(Windowsの場合)
o UNIXで動かしたい時は、system("type out.txt");の typeを cat辺りに変更してみて下さい。
--------
BEGIN {
  V = "out.txt";
  printf("1.ミクさん\n") > V;
  printf("2.リンちゃん\n") > V;
  printf("3.レン君\n") > V;
  printf("4.ルカ様\n") > V;
  fflush(V);

  system("type out.txt");
  close(V); # ファイルを閉じます。
##  print "fflush = " fflush(V); # ファイルを使っていない時に呼び出すと、-1を返します。
}
--------

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


**** 機能
o 出力バッファーの内容を、全てファイルに書き出します。

# 出力バッファーは、ファイルへの書き出しを高速化する為の仕組みです。
# printなどを実行すると、通常は、メモリ上にある出力バッファーに書き込みます。
# 出力バッファーが一杯になるか、ファイルを閉じる時に、実際にファイルに書き出します。
#

** 処理系に依存する動作
o Mawk for Windows 1.3.3では、print / printfが、パイプをサポートしていません。


**** 確認した処理系
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
    ▼制作メモ
    > system = OSのコマンドを実行して、終了コードを返す
    $0 = 最後に読み込んだデータ、1行分
    $1 = 最後に読み込んだデータの1列目
    +
    close = 開いたファイル(やパイプ)を閉じる
    getline = ファイル(やパイプ)から1行読み込む
    print = ファイルなどに書き出す
    printf = 文字列を組み立ててファイルなどに書き出す
(2010年8月13日変更。カタカナ用語の長音追加)

close = 開いたファイル(やパイプ)を閉じる - AWK

AWKの入出力関数とコマンド実行機能
○Gawk on Windows ○Gawk ○mawk32 △(パイプ不可)Mawk ○awk
AWKプログラム内で開いたファイル(やパイプ)を閉じます。
o 同じファイルやパイプを、別の目的に再利用したい時に、便利です。

**** 書式
--------
close( 開いているファイル名 )
--------

o UNIX版 Gawkの場合は、次の書式もサポートしています。
close( 開いているファイル名 [, 閉じる方向])

o 開いているファイル名 -- 入出力時に指定したファイル名やコマンド名、インターネット接続文字列です。
o 閉じる方向 -- UNIX版 Gawkの拡張です。
   + Windows版 Gawkの場合、指定する事は出来ますが、普通のclose扱いになります。
   + UNIX版 Gawkでは、コマンドへの入出力を同時に行っている時に、片方だけ閉じる事が出来ます。
   + 「閉じる方向」は、文字列で指定します。
   + "to" = AWKプログラムからの出力だけを閉じます。print系の方向です。
   + "from" = AWKプログラムへの入力だけを閉じます。getlineの方向です。
o 戻り値 -- 閉じるのに成功したら 0 / 失敗したら -1


**** 使用例
--------
BEGIN {
  V = " sort ";
  printf("4.ルカ様\n") | V;
  printf("3.レン君\n") | V;
  printf("2.リンちゃん\n") | V;
  printf("1.ミクさん\n") | V;
  close(V); # パイプを閉じます。sortコマンドが実行されて「1.ミクさん」から順に並びます。

  printf("3.MEIKOさん\n") | V;
  printf("2.KAITOさん\n") | V;
  printf("1.ミクさん\n") | V;
  close(V); # パイプを閉じます。今度の並び順は、1.ミクさん、2.KAITOさん、3.MEIKOさん。
##   print "close = " close(V); # 閉じたファイルやパイプをcloseすると、-1を返します。
}
--------

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


**** 機能
o AWKプログラム内で開いたファイル(やパイプ)を閉じます。
   + 同じコマンドを再利用したい時に使います。

** 処理系に依存する動作
o Mawk for Windows 1.3.3では、print / printfが、パイプをサポートしていません。


**** 確認した処理系
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
    ▼制作メモ
    > fflush = 出力バッファーを空にする
    system = OSのコマンドを実行して、終了コードを返す
    $0 = 最後に読み込んだデータ、1行分
    +
    getline = ファイル(やパイプ)から1行読み込む
    print = ファイルなどに書き出す
    printf = 文字列を組み立ててファイルなどに書き出す
(2010年10月7日追加。Gawkのインターネットアクセス)

ORS = printを使って書き出す時の改行文字 - AWK

AWKの入出力関数とコマンド実行機能
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
printを使って書き出す時の改行文字です。

**** 書式
--------
ORS
もしくは
ORS = "改行文字"
--------

o ORSは変数です。初期値は改行文字("\n")。
o 改行文字 -- 2文字以上指定する事も出来ます。例 = "<br />\n"


**** 使用例
--------
BEGIN {
  ORS = "朝ですよ。\n";
  print "ミクさん。"; # 「ミクさん。朝ですよ。」
}
--------

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


**** 機能
o printを使って出力する時に、自動的に最後に追加する文字です。
o 初期値は改行文字("\n")です。
o 2文字以上指定する事も出来ます。


**** 確認した処理系
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
    ▼制作メモ
    > OFMT = printを使って数値1つだけを書き出す時の書式
    CONVFMT = 数値を文字列に自動変換する時の書式
    FIELDWIDTHS = 固定長ファイルを読み込む為の設定(Gawk専用)
    +
    print = ファイルなどに書き出す
    OFS = printを使って出力する時の列区切り文字
    RS = 1行読み込む時の改行文字
    RT = 最後に読み込んだ行の改行文字(Gawk専用)
    AWKでバイナリ出力する方法(mawk, Gawk専用)

OFS = printを使って書き出す時の列区切り文字 - AWK

AWKの入出力関数とコマンド実行機能
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
printを使って書き出す時の、列区切り文字です。
o カンマで区切ると、カンマをこの値に置き換えます。

**** 書式
--------
OFS
もしくは
OFS = "列区切り文字"
--------

o OFSは変数です。初期値は半角空白1文字(" ")。
o 列区切り文字 -- 2文字以上指定する事も出来ます。例 = "\t"


**** 使用例
--------
BEGIN {
  OFS = "さん、";
  print "ミク", "リン", "朝ですよ。"; # 「ミクさん、リンさん、朝ですよ。」
}
--------

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


**** 機能
o printを使って出力する時にカンマで区切って並べると、カンマをOFSの値に置き換えてくれます。
o 初期値は" "、半角空白1文字です。
o 2文字以上指定する事も出来ます。


**** 確認した処理系
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
    ▼制作メモ
    > ORS = printを使って書き出す時の改行文字
    OFMT = printを使って数値1つだけを書き出す時の書式
    CONVFMT = 数値を文字列に自動変換する時の書式
    +
    ▼AWKの文字列操作機能
    print = ファイルなどに書き出す
    FS = 入力行を列に分割する時の区切り文字
    SUBSEP = 配列の添え字の区切り文字

printf = 文字列を組み立ててファイルなどに書き出す - AWK

AWKの入出力関数とコマンド実行機能
○Gawk on Windows ○Gawk ○mawk32 △(パイプ不可)Mawk ○awk
文字列を組み立てて、ファイルなどに書き出します。
o printよりも、細かい調節が出来ます。「この変数は、先頭2文字だけ書き出す」「改行しない」のように。

**** 書式
--------
printf(書式文字列 [, 値1 [, 値2 ... ]]) [出力先]
--------

o 書式文字列 -- 文字列の形で指定します。
   + 詳細は、「sprintf = 文字列を組み立てる」の下の方。
o 値1, 値2 ... -- 埋め込む値。変数や計算式なども指定出来ます。
o 出力先 -- 一時的に変更する事が出来ます。
   + > ファイル名 (初めて使用する時は、ファイルを上書きします。)
   + >> ファイル名 (ファイルの後ろに追加します。)
   + | コマンド名 (コマンドに渡します。対応していない処理系有り)
   + |& インターネット接続用文字列
      + /inet から始まる文字列の形で指定します。
      + |& は、入出力が可能なパイプです。
      + 詳しい書き方は、「/inet = AWKからインターネットにアクセスする方法(Gawk専用)
   + (UNIX版では、「|& コマンド名」の形も使用出来るみたいです)
   + 出力先に標準エラーなどを指定したい時は、特殊なファイル名を使います
o print文の括弧は、基本的には省略可能ですが、例外もあります。


**** 使用例
--------
BEGIN {
  printf("こんにちは。ミクさん。\n");

  v = "ミクさん";
  printf("こんにちは。%s。\n", v);
}
--------

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


**** 機能
o 指定した書式に合わせて、文字列を組み立てて、出力します。
o 書式文字列の書き方は、C言語のprintfとほぼ同じです。
   + 詳しくは、「sprintf = 文字列を組み立てる」の下の方をどうぞ。

** 処理系に依存する動作
o Mawk for Windows 1.3.3
   + 「| コマンド名」の形式は非対応です。
o UNIX版特有の機能
   + UNIX版では、出力先に「 |& コマンド名」の書き方が使えるみたいです。


**** 確認した処理系
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 -- print系からのパイプは非対応
o original = the one true awk(updated May 1, 2007)


==
関連ページ:
    ▼AWKの入出力関数とコマンド実行機能▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > close = 開いたファイル(やパイプ)を閉じる
    fflush = 出力バッファーを空にする
    system = OSのコマンドを実行して、終了コードを返す
    +
    文字列中で使用出来る特殊文字
    sprintf = 文字列を組み立てる
    print = ファイルなどに書き出す
    BINMODE = バイナリモードで読み書きする(mawk,Gawk専用)
(2010年8月28日追加。書式文字列の書き方へのリンク)
(2010年10月7日追加。Gawkのインターネットアクセス)