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行読み込む

環境変数 MORE = MOREコマンドの既定のオプションを指定する - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。画面表示と印刷関連
Windowsコマンド。制御文と環境変数
○Windows XP
この環境変数を設定すると、 MORE コマンドのオプションを間接的に指定する事が出来ます。

o 同じオプションをMORE コマンドで直接指定した時は、直接指定したオプションの値が優先されます。


**** 書式
--------
set MORE=オプション
--------

o コマンド名、環境変数名、オプションは、大文字小文字のどちらでも大丈夫です。
o オプション = MORE コマンドで既定にしたいオプションを指定します。
    + オプションを複数並べる時は、間に半角空白を入れます。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 環境変数そのものは、戻り値を更新しません。
o SET コマンドの戻り値をご覧下さい。


**** 使用例
o 連続する空白行を1行にして、タブを4文字の半角空白で置き換えます。
--------
set MORE=/s /t4
--------

    + 大文字小文字のどちらでも大丈夫です。全部、大文字や小文字で書く事も出来ます。


**** 機能
o MORE コマンドは、この環境変数の値を、オプションに自動的に組み込みます。
o 但し、同じオプションをMORE コマンドで直接指定した時は、直接指定したオプションの値が優先されます。
o なお、この環境変数でファイル名を指定する事は出来ません。
    + ファイル名を指定すると、MOREコマンドはエラーメッセージを出して終了します。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。画面表示と印刷関連▼ABC順
    ▼Windowsコマンド。制御文と環境変数▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > ▼Windowsコマンド。時刻関連
    > ▼Windowsコマンド。ヘルプ関連
    +
    MORE = テキストファイルの内容を1画面ずつ表示する

MORE = テキストファイルの内容を1画面ずつ表示する - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。画面表示と印刷関連
○Windows XP
テキストファイルの内容を、1画面ずつ表示します。

o このコマンドは、環境変数 MORE で指定した値を、オプションとして取り込みます。
    + ですので、予期しない動作をさせたくない時は、環境変数 MOREの値を空にしておく事をおすすめします。


**** 書式
--------
more [オプション] 表示したいファイル名
もしくは
more [オプション] < 表示したいファイル名
もしくは
実行したいコマンド | more [オプション]
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
o オプション = 下記のオプションを、半角空白区切りで並べます。
    + オプションを省略した時は、次のように動きます。
        + 環境変数 MORE の値があれば、オプションとして取り込みます。
        + 拡張機能(/E)は有効です。
        + この拡張機能は、CMDコマンドで拡張機能をOFF(cmd /e:off)にしても有効です。

MORE コマンドのオプション一覧
名前意味
/eこのコマンドの拡張機能を有効にします。
    + CMDコマンドなどの「コマンド拡張機能」とは別物です。
Windows XP Service Pack 3の場合、既定で拡張機能が有効になっています。
/c表示する前に、画面の表示内容を消去します。
/pフォームフィード文字(= 改ページ文字 0x0c)を展開します。
展開すると、ページの下まで空行が入ります。次のページの先頭1行にも空行が入ります。
なお、出力をリダイレクトする時には、このオプションは危険です。
    + ファイルへの出力が途中で止まり、スペースキーを押すなどの操作が必要になります。
/s空白行が複数連続する時に、空白行を1行にまとめます。
/t数字タブ文字を、数字で指定した個数の半角空白に置き換えます。
但し、常に正しい個数に置き換えるのは、数字が 0 か 1 の時だけです。
    + 数字に2を指定した時、連続するタブを置き換えると半角空白が1つ少なくなります。
    + 例えば、タブ2つは半角空白3個に置き換わります。
    + 数字に3以上を指定すると、置き換えるタブは1つ以上減ります。
    + 数字が3の時、タブ1つは半角空白2個、タブ2つは半角空白4個に置き換わります。
+数字最初に表示するファイルのみ、数字で指定した行数分だけスキップします。
先頭行から表示したい時は0、1行スキップなら1です。
指定した数字がファイルの行数を超えた時は、次のファイルの先頭から表示します。

o 表示したいファイル名 = 複数並べて書く事が出来ます。
    + ファイルを複数並べる時は、間に半角空白を入れます。
    + ファイル名に空白文字が入る時は、ファイル名を「"」(= 二重引用符)で括ります。
    + ワイルドカード(「*」や「?」)を指定する事も出来ます。
    + 但し、フォルダーを指定する事は出来ません。
    + UNIX形式のファイル名(「\」の所で「/」を使用)を指定したい時は、リダイレクトで入力します。
        + ファイル名を直接指定する時は、UNIX形式のファイル名を使用する事は出来ません。
o 実行したいコマンド = 任意のコマンドを実行して、その表示内容をこのコマンドに渡す事が出来ます。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o 0 = 成功、もしくは書式エラー
    + 「無効なパラメータです - /mikusan」 = 書式が間違っています。
o 1 = ファイルのアクセスエラー
    + 「ファイル C:\ミクさん にアクセスできません」 = フォルダー名では無く、ファイル名を指定して下さい。


**** 機能
o テキストファイルの内容を1画面ずつ表示します。
o 「-- More --」と表示されて止まっている時、コマンド入力を受け付けます。
    + Windows XPの場合、このコマンドの拡張機能は、既に有効になっていました。

「-- More --」で入力出来るコマンドの一覧
名前意味
空白(スペースキー)次のページを表示します。
(Enterキー)次の1行を表示します。
q終了します。
f次のファイルを表示します。
次のファイルが無い時は、終了します。
p 数字数字で指定した行数分だけ、表示します。
「p」と入力すると、数字の入力を促すメッセージを表示します。
s 数字数字で指定した行数分だけ、スキップします。
表示するのは次のページ(= 1画面分)です。
「s」と入力すると、数字の入力を促すメッセージを表示します。
=現在の位置(= 行番号)を表示します。
?「-- More --」で入力出来るコマンドの一覧を表示します。

o このコマンドは、環境変数 MORE で指定した値を、オプションとして取り込みます。
    + 但し、コマンドのオプション指定と重複する時は、コマンドのオプション指定を優先します。

** 仕様外の動作
o /p オプションを指定しない場合は、このコマンドの出力をリダイレクトする事が可能です。
    + 長いファイルを止める事無く、ファイルに出力します。
o /p オプションを指定して、実際に改ページ文字が現れた時は、MOREコマンドはキー入力を待ちます。


**** 使用例
--------
more ミクさんの料理予定.txt ミクさんの料理を最後まで食べる方法.txt

more ミクさんの料理*.txt
dir /b /s *胃腸薬* | more
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + 表示内容が長いと、途中で止まります。ですので、このコマンドは、自動処理には向いていません。


**** メモ
o 以前、TYPEコマンドで表示出来ない、特殊な文字コードが混じっているテキストファイルを、このコマンドを使うと、適当に解釈して表示してくれた事がありました。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼画面表示と印刷関連▼ABC順
    ▼Windowsコマンド一覧▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > CLS = コマンドプロンプト画面の表示内容を消去する
    PROMPT = コマンドプロンプトの表示文字列を変更する
    COLOR = 現在のコマンドプロンプト画面の背景と文字の色を変更する
    +
    TYPE = テキストファイルの内容を表示する
(2011年7月29日追加。/tオプションの詳細動作と、環境変数 MORE)