英語フランス語スペイン語

Ad


OnWorksファビコン

gawk - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーター上の OnWorks 無料ホスティング プロバイダーで gawk を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド gawk です。

プログラム:

NAME


gawk - パターンスキャンおよび処理言語

SYNOPSIS


ガック [ POSIX または GNU スタイルのオプション ] -f プログラムファイル [ -- ] ファイル ...
ガック [ POSIX または GNU スタイルのオプション ] [ -- ] プログラムテキスト ファイル ...

DESCRIPTION


ゴーク GNU プロジェクトによる AWK プログラミング言語の実装です。 に準拠します
POSIX 1003.1 標準における言語の定義。 このバージョンは、
の説明に基づいて   AWK プログラミング 言語設定、アホ、カーニハン、著
ワインバーガー。 ゴーク Brian の現在のバージョンにある追加機能を提供します
カーニハンさんの awk および多数の GNU 固有の拡張機能。

コマンドラインは次のオプションで構成されます。 ガック それ自体、AWK プログラム テキスト (指定されていない場合)
ビア -f or - ファイル オプション)、およびで使用可能になる値 ARGC & ARGV プレ
定義された AWK 変数。

日時 ガック で呼び出されます - プロフィール オプションを選択すると、プロファイリング統計の収集が開始されます
プログラムの実行から。 ゴーク このモードでは実行速度が遅くなり、自動的に
ファイル内に実行プロファイルを生成します awkprof.out それが終わったら。 を参照してください。 - プロフィール
以下のオプション。

ゴーク 統合されたデバッガもあります。 インタラクティブなデバッグ セッションは、次の方法で開始できます。
供給 - デバッグ コマンドラインにオプションを追加します。 この実行モードでは、 ガック 負荷
AWK ソース コードが表示され、デバッグ コマンドの入力が求められます。 ゴーク AWKのみをデバッグできます
付属のプログラムソース -f オプション。 デバッガについては、次のドキュメントに記載されています。 ガウク: 効果的な
AWK プログラミング.

オプション FORMAT


ゴーク オプションは、従来の POSIX スタイルの XNUMX 文字オプション、または GNU スタイルの長いオプションのいずれかです。
オプション。 POSIX オプションは単一の「-」で始まりますが、長いオプションは「--」で始まります。 長さ
オプションは、GNU 固有の機能と POSIX で必須の機能の両方に提供されます。

ゴーク固有のオプションは通常、長いオプション形式で使用されます。 長いオプションの引数
によってオプションと結合されるか、 = 間にスペースを入れない記号、または
次のコマンドライン引数で指定します。 長いオプションは次の場合に限り省略できます。
略語は一意のままです。

さらに、すべての長いオプションには対応する短いオプションがあるため、オプションの
機能は内部から使用できます #! 実行可能なスクリプト。

OPTIONS


ゴーク 次のオプションを受け入れます。 標準オプションが最初にリストされ、次にリストされます
のオプション ガック 拡張子。短いオプションごとにアルファベット順にリストされています。

-f プログラムファイル
- ファイル プログラムファイル
ファイルから AWK プログラム ソースを読み取ります プログラムファイル、最初からではなく
コマンドライン引数。 多数 -f (または - ファイル) オプションを使用できます。

-F fs
-フィールドセパレータ fs
  fs 入力フィールドの区切り文字 ( FS 事前定義された変数)。

-v VAR=ヴァル
- 割当 VAR=ヴァル
値を割り当てる ヴァル 変数に VAR、プログラムの実行が開始される前に。
このような変数値は、 ベギン AWK プログラムのルール。

-b
--バイトとしての文字
すべての入力データを半角文字として扱います。 言い換えれば、一切お金を支払わないでください
文字列をマルチバイトとして処理しようとする場合はロケール情報に注意してください
文字。 ザ・ --posix オプションはこれをオーバーライドします。

-c
- 伝統的
走り込む 互換性 モード。 互換モードでは、 ガック と同じように動作します
ブライアン・カーニハンの awk; GNU 固有の拡張機能はどれも認識されません。 見る GNU
延長詳細については、以下を参照してください。

-C
-著作権
GNU 著作権情報メッセージの短いバージョンを標準規格に印刷します。
と出力され、正常に終了します。

-d[file]
--ダンプ変数[=file]
グローバル変数、その型、および最終値のソートされたリストを出力します。 file。 場合
いいえ file 供給される、 ガック という名前のファイルを使用します awkvars.out 現在のディレクトリにあります。
すべてのグローバル変数のリストを持つことは、誤植を探すのに良い方法です。
プログラム内のエラー。 サイズが大きい場合にも、このオプションを使用します。
多くの関数を含むプログラムで、関数が機能しないことを確認したい場合
ローカルであるはずのグローバル変数を誤って使用してしまう。 (これは
特に次のような単純な変数名で犯しやすい間違い i, j、 等々。)

-D[file]
- デバッグ[=file]
AWK プログラムのデバッグを有効にします。 デフォルトでは、デバッガーはコマンドを読み取ります。
キーボード (標準入力) から対話的に。 オプションの file 引数
デバッガーが実行するコマンドのリストを含むファイルを指定します。
インタラクティブに。

-e プログラムテキスト
- ソース プログラムテキスト
  プログラムテキスト AWK プログラムのソース コードとして。 このオプションを使用すると、簡単に
ライブラリ関数の混合 ( -f & - ファイル オプション) ソース付き
コマンドラインに入力されたコード。 主に中規模から大規模の AWK を対象としています。
シェルスクリプトで使用されるプログラム。

-E file
--exec file
そして -fただし、これは最後に処理されるオプションです。 これはそうあるべきです
で使用 #! 特に CGI アプリケーションの場合、スクリプトの受け渡しを避けるため
URL からのコマンド ラインのオプションまたはソース コード (!)。 このオプションは無効にします
コマンドライン変数の割り当て。

-g
--gen-pot
AWK プログラムをスキャンして解析し、GNU を生成します。 .POT (ポータブルオブジェクトテンプレート)
標準出力上のフォーマット ファイル。ローカライズ可能なすべての文字列のエントリが含まれます。
プログラム。 プログラム自体は実行されません。 GNU を参照 gettextを の配布
詳細については .POT ファイル。

-h
- 助けて 使用可能なオプションの比較的短い概要を標準出力に出力します。
(によると GNU コーディング 規格、これらのオプションを使用すると、即座に正常に終了します)。

-i インクルードファイル
- 含む インクルードファイル
awk ソース ライブラリをロードします。 これは、 AWKパス
環境変数。 最初の検索が失敗した場合は、別の検索が試行されます
を追加した後、 .awk サフィックス。 ファイルは XNUMX 回だけロードされます (つまり、
重複は削除されます)、コードはメインプログラムを構成しません
ソース。

-l リブ
- ロード リブ
共有ライブラリをロードする リブ。 これは、 AWクリパス
環境変数。 最初の検索が失敗した場合は、別の検索が試行されます
プラットフォームのデフォルトの共有ライブラリ接尾辞を追加した後。 図書館
初期化ルーチンの名前が期待されています dl_load().

-L []
--糸くず[=]
疑わしい、または他の AWK に移植できない構造について警告を提供します。
実装。 オプションの引数を指定すると、 致命的な、lint 警告が致命的になる
エラー。 これは大胆かもしれませんが、これを使用することで開発が確実に促進されるでしょう。
よりクリーンな AWK プログラム。 オプションの引数を指定すると、 無効、に関する警告のみ
実際には無効なものが発行されます。 (これはまだ完全には実装されていません。)

-M
--ビグナム
数値に対して任意精度の演算を強制します。 このオプションは次の場合には効果がありません。 ガック
GNU MPFR および MP ライブラリを使用するようにコンパイルされていません。

-n
--XNUMX 進数以外のデータ
入力データ内の XNUMX 進数値と XNUMX 進数値を認識します。   この オプション   素晴らしい
あぶない!

-N
--use-lc-数値
この力 ガック 入力を解析するときにロケールの小数点文字を使用するには
データ。 POSIX 標準ではこの動作が必要ですが、 ガック いつそうするか
--posix が有効な場合、デフォルトでは従来の動作に従い、
ピリオドが小数点ではないロケールでも、小数点としてピリオドが使用されます。
ポイントキャラクター。 このオプションは、完全な変更を行わずにデフォルトの動作をオーバーライドします。
厳格な厳格さ --posix オプションを選択します。

-o[file]
-きれいなプリント[=file]
プログラムのきれいに印刷されたバージョンを次の場所に出力します。 file。 いいえの場合 file 供給される、
ガック という名前のファイルを使用します awkprof.out 現在のディレクトリにあります。

-O
- 最適化
プログラムの内部表現の最適化を有効にします。 現在、
これには、単純な定数の折りたたみと、再帰的な末尾呼び出しの削除が含まれます。
関数。 ザ ガック メンテナは、時間の経過とともにさらに最適化を追加したいと考えています。

-p[プロファイルファイル]
- プロフィール[=プロファイルファイル]
プロファイリング セッションを開始し、プロファイリング データを送信します。 プロファイルファイル。 デフォルト
is awkprof.out。 プロファイルには、各ステートメントの実行回数が含まれます。
左マージンにはプログラムが表示され、各ユーザー定義関数の関数呼び出し数が表示されます。

-P
--posix
これがオンになります 互換性 モードには、次の追加の制限があります。

· \x エスケープシーケンスは認識されません。

· 次の場合、スペースとタブのみがフィールド区切り文字として機能します。 FS 単一のスペースに設定されている場合、
改行はそうではありません。

· 以降の行を続けることはできません。 ? & :.

・同義語 ファンク キーワードに対して function 認識されません。

· オペレーター ** & ** = の代わりに使用することはできません ^ & ^=.

-r
--再間隔
の使用を有効にする インターバル 表現 正規表現によるマッチング (「 レギュラー
、 下)。 間隔式は従来、
AWK言語。 POSIX 標準では、これらを追加して、 awk & egrep と一致
お互い。 これらはデフォルトで有効になっていますが、このオプションは引き続き使用できます。
- 伝統的.

-S
--サンドボックス
Active Runs ガック サンドボックス モードでは、 システム() 関数、入力リダイレクト
ゲットライン、出力リダイレクト 印刷 & printf、および動的拡張機能の読み込み。
コマンドの実行 (パイプライン経由) も無効になります。 これにより効果的にブロックされます。
スクリプトがローカル リソース (ファイル上で指定されたファイルを除く) にアクセスできないようにします。
コマンドライン)。

-t
--lint-old
元のバージョンに移植できない構造について警告を表示します。
UNIX awk.

-V
- バージョン
この特定のコピーのバージョン情報を出力します ガック 標準出力で。
これは主に、現在のコピーが ガック システムは起動しています
Free Software Foundation が配布しているものに関しては、これまでのところ、
これはバグを報告するときにも役立ちます。 (によると GNU コーディング 規格、これらの
オプションを指定すると、即座に正常に終了します)。

-- オプションの終了を知らせます。 これは、AWK にさらに引数を追加できるようにするのに役立ちます。
プログラム自体が「-」で始まるようにします。 これにより、議論との一貫性が保たれます
他のほとんどの POSIX プログラムで使用される解析規則。

互換モードでは、他のオプションには無効のフラグが立てられますが、それ以外の場合は無効です。
無視されました。 通常の動作では、プログラムテキストが提供されている限り、不明なオプションが
で AWK プログラムに渡されます。 ARGV 処理用の配列。 これは特に
「#!」を使用して AWK プログラムを実行する場合に便利です。 実行可能なインタプリタメカニズム。

POSIX 互換性のために、 -W オプションを使用し、その後に長いオプション名を続けることができます。

AWK プログラム 実行


AWK プログラムは、一連のパターンアクションステートメントとオプションの関数で構成されます。
定義。

@含む "ファイル名"
@ロード "ファイル名"
パターン { アクション }
function (パラメーター リスト) { }

ゴーク まずプログラムソースを プログラムファイル(s) 指定されている場合、引数から
〜へ - ソース、またはコマンドラインの最初の非オプション引数から。 の -f &
- ソース オプションはコマンドラインで複数回使用できます。 ゴーク プログラムを読みます
あたかもすべてのテキストであるかのように、 プログラムファイルとコマンドラインのソーステキストが連結されていた
一緒。 これは、AWK 関数のライブラリを構築する際に便利です。
それらを使用する新しい AWK プログラムにそれらを含めます。 ミックスする機能も提供します
コマンドラインプログラムを使用したライブラリ関数。

さらに、で始まる行は、 @含む 他のソースファイルをインクルードするために使用される場合があります
プログラムに追加すると、ライブラリの使用がさらに簡単になります。 これは、 -i オプションを選択します。

で始まる行 @ロード 共有ライブラリをプログラムにロードするために使用できます。 これ
を使用するのと同等です -l オプションを選択します。

環境変数 AWKパス ソースファイルを検索するときに使用する検索パスを指定します
で名付けられた -f & -i オプション。 この変数が存在しない場合、デフォルトのパスは次のとおりです。
「.:/usr/local/share/awk」。 (実際のディレクトリは方法によって異なる場合があります) ガック ました
ビルドしてインストールされています。) ファイル名が -f オプションに「/」文字が含まれています。
パス検索が行われます。

環境変数 AWクリパス ソースを見つけるときに使用する検索パスを指定します
で名前が付けられたファイル -l オプション。 この変数が存在しない場合、デフォルトのパスは次のとおりです。
「/usr/local/lib/gawk」。 (実際のディレクトリは方法によって異なる場合があります) ガック 建設されました
そしてインストールされました。)

ゴーク AWK プログラムは次の順序で実行されます。 まず、すべての変数の代入
経由で指定された -v オプションが実行されます。 次、 ガック プログラムをコンパイルして
内部形式。 それから、 ガック 内のコードを実行します ベギン ルール (ある場合)、そして
で指定された各ファイルの読み取りを続行します。 ARGV 配列(最大 ARGV[ARGC])。 ない場合
コマンドラインで指定されたファイル、 ガック 標準入力を読み取ります。

コマンドラインのファイル名の形式が次の場合 VAR=ヴァル 変数として扱われます
割り当て。 変数 VAR 値が割り当てられます ヴァル。 (これは何らかの後に起こります
ベギン ルールが実行されています。) コマンド ライン変数の割り当ては、次の場合に最も役立ちます。
AWK が入力を分割する方法を制御するために使用する変数に値を動的に割り当てる
フィールドとレコード。 複数のパスが必要な場合に状態を制御するのにも役立ちます。
単一のデータ ファイルにわたって。

特定の要素の値が ARGV は空です (""), ガック それを飛び越えます。

各入力ファイルについて、 ファイルの開始 ルールが存在し、 ガック 前に関連するコードを実行します
ファイルの内容を処理しています。 同様に、 ガック に関連付けられたコードを実行します
エンドファイル ファイルの処理後。

入力内の各レコードについて、 ガック どれかに一致するかどうかをテストする パターン AWKで
プログラム。 レコードが一致するパターンごとに、 ガック 関連するものを実行します アクション.
パターンは、プログラム内で発生する順序でテストされます。

最後に、インプットをすべて使い果たした後、 ガック 内のコードを実行します 終わり ルール (場合
どれでも)。

Command LINE ディレクトリ
POSIX によれば、 awk コマンドラインはテキストファイルである必要があります。 動作
そうでない場合は「未定義」になります。 ほとんどのバージョンの awk コマンドでディレクトリを扱う
致命的なエラーとして行が表示されます。

バージョン 4.0 以降 ガック、コマンドライン上のディレクトリでは警告が生成されますが、
それ以外の場合はスキップされます。 どちらかの場合、 --posix or - 伝統的 オプションが与えられると、
ガック コマンドライン上のディレクトリを致命的なエラーとして扱うように戻ります。

変数、 記録 そして フィールド


AWK 変数は動的です。 それらは最初に使用されたときに存在します。 彼らの
値は、その状態に応じて、浮動小数点数か文字列、あるいはその両方になります。
使用済み。 AWK には XNUMX 次元配列もあります。 複数の次元を持つ配列は
シミュレート。 ゴーク 配列の真の配列を提供します。 見る 配列、 下。 いくつかの事前定義済み
変数はプログラムの実行時に設定されます。 これらについては必要に応じて説明し、以下にまとめます。

射撃記録
通常、レコードは改行文字で区切られます。 レコードの保存方法を制御できます
組み込み変数に値を代入して分離 RS。 場合 RS 任意の XNUMX 文字、
この文字はレコードを区切ります。 さもないと、 RS は正規表現です。 のテキスト
この正規表現に一致する入力によってレコードが区切られます。 ただし、
互換モードでは、文字列値の最初の文字のみが区切りに使用されます。
記録。 もしも RS が NULL 文字列に設定されている場合、レコードは空白行で区切られます。
日時 RS NULL 文字列に設定されている場合、改行文字は常にフィールド区切り文字として機能します。
あらゆる価値に加えて FS がある可能性があり。

フィールズ
各入力レコードが読み取られると、 ガック レコードを分割します フィールドの値を使用して、
FS 変数をフィールド区切り文字として使用します。 もしも FS は XNUMX 文字であり、フィールドは次のように区切られています。
そのキャラクター。 もしも FS が NULL 文字列の場合、個々の文字はそれぞれ
別のフィールド。 さもないと、 FS は完全な正規表現であることが期待されます。 の中に
特別な場合 FS 単一のスペースです。フィールドは一連のスペースやタブで区切られています。
および/または改行。 (ただし、次のセクションを参照してください) POSIX 互換性の確保、 未満)。 注意: の値
無視する (下記を参照) は、次の場合のフィールドの分割方法にも影響します。 FS は正規表現です。
また、その場合にレコードがどのように分離されるか RS は正規表現です。

Status フィールド幅 変数はスペースで区切られた数値のリストに設定され、各フィールドは
固定幅を持つことが期待されており、 ガック 指定された幅を使用してレコードを分割します。
の値 FS 無視されます。 新しい値を割り当てる FS or FPAT の使用をオーバーライドします
フィールド幅.

同様に、 FPAT 変数は正規表現を表す文字列に設定され、それぞれ
フィールドは、その正規表現に一致するテキストで構成されます。 この場合、通常の
式は、フィールドを区切るテキストではなく、フィールド自体を説明します。
新しい値を割り当てる FS or フィールド幅 の使用をオーバーライドします FPAT.

入力レコードの各フィールドは、その位置によって参照できます。 $1, $2、などなど。 $0
全記録です。 フィールドは定数で参照する必要はありません。

n = 5
印刷 $n

入力レコードの XNUMX 番目のフィールドを出力します。

変数 NF 入力レコード内のフィールドの合計数に設定されます。

存在しないフィールドへの参照 (つまり、 $ NF) NULL 文字列を生成します。
ただし、存在しないフィールドに代入すると (例: $(NF+2) = 5) の値が増加します NF,
NULL 文字列を値として含む介在フィールドを作成し、値を生成します。
of $0 フィールドが次の値で区切られて再計算されます。 FSO。 参考文献
負の番号のフィールドを指定すると、致命的なエラーが発生します。 デクリメント中 NF の値を引き起こします
新しい値を超えるフィールドは失われ、その値は $0 で再計算される
フィールドは次の値で区切られています FSO.

既存のフィールドに値を割り当てると、次の場合にレコード全体が再構築されます。 $0 is
参照しました。 同様に、値を代入すると、 $0 レコードが再分割され、
フィールドの新しい値。

内蔵 Variables
ゴークの組み込み変数は次のとおりです。

ARGC コマンドライン引数の数 (オプションは含まれません) ガック、または
プログラムソース)。

アルギンド のインデックス ARGV 処理中の現在のファイルの。

ARGV コマンドライン引数の配列。 配列には 0 から XNUMX までのインデックスが付けられます。 ARGC - 1。
内容を動的に変更する ARGV データに使用されるファイルを制御できます。

ビンモード 非 POSIX システムでは、すべてのファイル I/O に「バイナリ」モードの使用を指定します。
1、2、または 3 の数値で、入力ファイル、出力ファイル、またはすべてのファイルを指定します。
それぞれのファイルはバイナリ I/O を使用する必要があります。 の文字列値 「r」または 「わ」
入力ファイルまたは出力ファイルがそれぞれバイナリを使用することを指定します
I/O。 の文字列値 「rw」 or 「うーん」 すべてのファイルがバイナリを使用するように指定します
I/O。 他の文字列値は次のように扱われます。 「rw」ただし、警告が生成されます
メッセージ。

CONVFMT 数値の変換形式、 「%.6g」、デフォルトで。

環境 現在の環境の値を含む配列。 配列は
環境変数によってインデックスが付けられ、各要素はその値になります
変数 (例: 環境[「ホーム」] かもしれません 「/ホーム/アーノルド」)。 この配列を変更する
プログラムが認識する環境には影響しません。 ガック 経由でスポーンします
リダイレクトまたは システム() 機能。

エラー番号 システムエラーが発生した場合は、リダイレクトを実行します。 ゲットライン、読み取り中
for ゲットライン、または 閉じる()をタップし、その後、 エラー番号 説明する文字列が含まれます
エラー。 値は英語以外のロケールでは翻訳される可能性があります。

フィールド幅 空白で区切られたフィールド幅のリスト。 設定すると、 ガック 入力を解析します
の値を使用する代わりに、固定幅のフィールドに入力します。 FS 変数として
フィールド区切り文字。 見る フィールズ、上記。

ファイル名 現在の入力ファイルの名前。 コマンドでファイルが指定されていない場合
行、の値 ファイル名 は "-"。 しかし、 ファイル名 内部では未定義です
ベギン ルール(によって設定されていない限り) ゲットライン).

FNR 現在の入力ファイル内の入力レコード番号。

FPAT レコード内のフィールドの内容を説明する正規表現。 いつ
セット、 ガック 入力をフィールドに解析します。フィールドは通常のフィールドと一致します。
の値を使用する代わりに、式を使用します。 FS フィールドとしての変数
セパレータ。 見る フィールズ、上記。

FS 入力フィールドの区切り文字。デフォルトではスペースです。 見る フィールズ、上記。

機能タブ インデックスと対応する値がすべてのユーザーの名前である配列。
プログラム内で定義された関数または拡張関数。 注意: は使用できません。
削除 とのステートメント 機能タブ アレイ。

無視する すべての正規表現および文字列操作の大文字と小文字の区別を制御します。
If 無視する ゼロ以外の値がある場合、文字列比較とパターン
ルール内でのマッチング、フィールド分割 FS & FPAT、で区切られたレコード
RS、正規表現と一致する ~ & !~、 そしてその gensub(), gsub(),
index(), マッチ(), パットスプリット(), スプリット(), サブ() 組み込み関数はすべて無視されます
正規表現操作を行う場合。 注意: 配列の添字は
影響を受ける。 しかし アソート() & アソーティ() 機能が影響を受けます。
したがって、 無視する ゼロに等しくない、 /aB/ すべての文字列と一致します
「アブ」, 「aB」, 「アブ」, 「AB」。 すべての AWK 変数と同様に、次の初期値は
無視する はゼロであるため、すべての正規表現および文字列操作は
通常は大文字と小文字が区別されます。

リント の動的制御を提供します。 --糸くず AWK プログラム内からオプションを選択します。
本当の場合、 ガック lint 警告を出力します。 false の場合、そうではありません。 割り当てられたとき
文字列値 "致命的"、lint 警告は致命的なエラーになります。
--lint=致命的。 その他の true 値は、警告を出力するだけです。

NF 現在の入力レコード内のフィールドの数。

NR これまでに確認された入力レコードの総数。

OFMT 数値の出力形式、 「%.6g」、デフォルトで。

FSO 出力フィールドの区切り文字。デフォルトではスペースです。

ORS 出力レコード区切り文字。デフォルトでは改行です。

プレック 任意精度浮動小数点数の動作精度、53 by
デフォルト。

プロシンフォ この配列の要素は、実行中の AWK に関する情報へのアクセスを提供します。
プログラム。 一部のシステムでは、配列内に要素が存在する場合があります。 「グループ1」
  "グループn" いくつかのための n、これは、
プロセスにはあります。 使用 in これらの要素をテストする演算子。 の
次の要素が利用可能であることが保証されています。

PROCINFO["egid"] の値 ゲギッド(2)システムコール。

PROCINFO["strftime"]
デフォルトの時刻形式文字列 strftime().

PROCINFO["euid"] の値 ゲットイッド(2)システムコール。

PROCINFO["FS"] 「FS」 フィールドを分割する場合 FS 有効です、 「FPAT」 if
フィールド分割 FPAT 有効である、または 「フィールドウィズ」
フィールドを分割する場合 フィールド幅 有効です。

PROCINFO["識別子"]
使用されるすべての識別子の名前によってインデックス付けされたサブ配列
AWK プログラムのテキスト内。 値は何を示しますか
ガック 終了後の識別子について知る
プログラムを解析する。 彼らです その間更新されました
プログラムが実行されます。 各識別子の値は、
要素は次のいずれかです。

"配列"
識別子は配列です。

「内蔵」
識別子は組み込み関数です。

"拡大"
識別子は、経由でロードされる拡張関数です。
@ロード or -l.

"スカラー"
識別子はスカラーです。

「型なし」
識別子は型指定されていません (識別子として使用できます)
スカラーまたは配列、 ガック まだわかりません)。

"ユーザー" 識別子はユーザー定義関数です。

PROCINFO["gid"] の値 イライラする(2)システムコール。

PROCINFO["pgrpid"] 現在のプロセスのプロセス グループ ID。

PROCINFO["pid"] 現在のプロセスのプロセス ID。

PROCINFO["ppid"] 現在のプロセスの親プロセス ID。

PROCINFO["uid"] の値 取得(2)システムコール。

PROCINFO["sorted_in"]
この要素が存在する場合、 プロシンフォ、次にその値
配列要素が走査される順序を制御します
in for ループします。 サポートされている値は次のとおりです 「@ind_str_asc」,
「@ind_num_asc」, 「@val_type_asc」, 「@val_str_asc」,
「@val_num_asc」, 「@ind_str_desc」, 「@ind_num_desc」,
「@val_type_desc」, 「@val_str_desc」, 「@val_num_desc」,
「@未分類」。 値には任意の名前を指定することもできます。
比較関数は次のように定義されます。

function cmp_func(i1, v1、 i2、 v2)

コラボレー i1 & i2 はインデックスであり、 v1 & v2 です。
比較される XNUMX つの要素の対応する値。
以下の数値、等しい数値、またはそれ以上の数値を返す必要があります。
配列の要素がどのように処理されるかに応じて、0 よりも大きくなります。
注文する。

PROCINFO["入力", "読み取りタイムアウト"]
データを読み取る際のタイムアウト (ミリ秒単位) ,
コラボレー リダイレクト文字列またはファイル名です。 価値
XNUMX または XNUMX 未満の場合は、タイムアウトがないことを意味します。

PROCINFO["mpfr_version"]
任意の目的で使用される GNU MPFR ライブラリのバージョン
での精度数値のサポート ガック。 このエントリはそうではありません
MPFR サポートがコンパイルされていない場合に存在します。 ガック.

PROCINFO["gmp_version"]
任意の目的で使用される GNU MP ライブラリのバージョン
での精度数値のサポート ガック。 このエントリはそうではありません
MPFR サポートがコンパイルされていない場合に存在します。 ガック.

PROCINFO["prec_max"]
GNU MPFR ライブラリでサポートされる最大精度
任意精度の浮動小数点数の場合。 これ
MPFR サポートがコンパイルされていない場合、エントリは存在しません。
ガック.

PROCINFO["prec_min"]
GNU MPFR ライブラリで許可される最小精度。
任意精度の浮動小数点数。 このエントリーは
MPFR サポートがコンパイルされていない場合は存在しません。 ガック.

PROCINFO["api_major"]
拡張機能 API のメジャー バージョン。 このエントリはそうではありません
動的拡張機能のロードが利用できない場合に存在します。

PROCINFO["api_minor"]
拡張機能 API のマイナー バージョン。 このエントリはそうではありません
動的拡張機能のロードが利用できない場合に存在します。

PROCINFO["バージョン"] のバージョン ガック.

ラウンドモード 数値の任意精度演算に使用する丸めモード。
デフォルト "N" (IEEE-754 RoundTiesToEven モード)。 受け入れられる値は次のとおりです "N" or
"NS" RoundTiesToEven の場合、 「U」 or 「u」 RoundTowardPositive の場合、 "D"の or 「d」 for
RoundTowardNegative、 「Z」 or 「z」 RoundTowardZero の場合、およびお使いのバージョンの場合
GNU MPFR ライブラリはそれをサポートしており、 "A" or 「あ」 ラウンドタイズトゥアウェイ用。

RS 入力レコードの区切り文字。デフォルトでは改行です。

RT レコードターミネータ。 ゴーク セット RT に一致した入力テキストに
で指定された文字または正規表現 RS.

再スタート 一致する最初の文字のインデックス マッチ(); 一致しない場合は 0。 (これ
文字インデックスが XNUMX から始まることを意味します)。

長さ 一致する文字列の長さ マッチ(); 一致しない場合は -1。

サブセップ 配列要素内の複数の添え字を区切るために使用される文字。
デフォルト "\ 034".

シンボルタブ 現在定義されているすべてのグローバル変数の名前をインデックスとする配列
プログラム内の配列。 配列は、読み取りへの間接アクセスに使用される場合があります。
または、変数の値を書き込みます。

foo = 5
SYMTAB["foo"] = 4
印刷 foo # プリント 4

  isarray() 関数は、要素が次の要素であるかどうかをテストするために使用できます。 シンボルタブ あります
配列。 は使用できない場合があります。 削除 とのステートメント シンボルタブ アレイ。

テキストドメイン AWK プログラムのテキスト ドメイン。 ローカライズされた翻訳を見つけるために使用されます
プログラムの文字列の場合。

配列
配列には角括弧 ([ & ])。 もし
式は式リスト (, ...) 配列の添え字は文字列です
各式の (文字列) 値を連結したもので構成され、
の値 サブセップ 変数。 この機能は、複数の次元をシミュレートするために使用されます。
配列。 例えば:

i = 「あ」; j = "B"; k = "C"の
x[i, j, k] = "こんにちは、 世界\n"

文字列を割り当てます "こんにちは、 世界\n" 配列の要素に x これは、
文字列 「A\034B\034C」。 AWK のすべての配列は連想的です。つまり、文字列値によってインデックスが付けられます。

特別なオペレーター in 配列に以下から構成されるインデックスがあるかどうかをテストするために使用できます。
特定の値:

if (ヴァル in アレイ)
印刷 配列[値]

配列に複数の添字がある場合は、次を使用します。 (私、 j) in 配列.

  in コンストラクトは、 for のすべての要素を反復するループ
配列。 しかし (私、 j) in 配列 構築はテストでのみ機能し、テストでは機能しません for ループ。

要素は、次のコマンドを使用して配列から削除できます。 削除 ステートメント。 は 削除 ステートメント
配列を指定するだけで、配列の内容全体を削除するためにも使用できます。
下付き文字のない名前。

ガック 真の多次元配列をサポートします。 このような配列が存在する必要はありません。
C または C++ の「長方形」。 例えば:

a [1] = 5
[2][1] = 6
[2][2] = 7

注意: 伝える必要があるかもしれません ガック 使用するには、配列要素が実際には部分配列であることを確認します。
それはどこ ガック 配列を期待します (たとえば、 スプリット())。 できるよ
これを行うには、サブ配列内に要素を作成し、それを次のコマンドで削除します。 削除
声明。

変数 タイプ 変換
変数とフィールドは、(浮動小数点) 数値、文字列、あるいはその両方です。 価値はどのように
変数の解釈はコンテキストに応じて異なります。 数値式で使用する場合、
数値として扱われます。 文字列として使用すると、文字列として扱われます。

変数を強制的に数値として扱うには、変数に 0 を追加します。 として扱われるように強制する
文字列を空文字列と連結します。

初期化されていない変数には、数値 0 と文字列値 "" (null、または
空、文字列)。

文字列を数値に変換する必要がある場合、変換は次を使用して行われます。
ストロッド(3)。 数値は、次の値を使用して文字列に変換されます。 CONVFMT フォーマットとして
の文字列 スプリント(3) 変数の数値を引数として使用します。 しかし、
AWK 内のすべての数値が浮動小数点であっても、整数値は 常に として変換される
整数。 したがって、与えられた

CONVFMT = "%2.2f"
a = 12
b = a ""

変数 b の文字列値があります "12" そうではない "12.00".

注意: POSIX モードで動作している場合 ( --posix オプション)、ロケールに注意してください
設定は、小数の処理方法に干渉する可能性があります。
あなたがフィードしている番号 ガック ロケールが期待するものに準拠する必要があります。
カンマ (,) またはピリオド (.)。

ゴーク 次のように比較を実行します。 XNUMX つの変数が数値の場合、それらは比較されます。
数値的には。 一方の値が数値で、もう一方の値が「数値」である文字列値を持つ場合
string」の場合、比較も数値的に行われます。 それ以外の場合、数値は次のようになります。
文字列に変換され、文字列比較が実行されます。 XNUMX つの文字列が比較されます。
もちろん文字列として。

次のような文字列定数に注意してください。 "57"持っている 数値文字列、それは文字列です
定数。 「数値文字列」の考え方はフィールドにのみ適用されます。 ゲットライン 入力、 ファイル名,
ARGV 要素、 環境 要素と、によって作成された配列の要素 スプリット() or
パットスプリット() それは数値文字列です。 基本的な考え方は次のとおりです user 、およびユーザーのみ
数値に見える入力は、そのように扱う必要があります。

オクタル & 16進数 定数
AWK プログラムのソース コードでは、C スタイルの XNUMX 進数および XNUMX 進数の定数を使用できます。 ために
たとえば、XNUMX 進数値 011 XNUMX進数に等しい 9、および XNUMX 進値 0x11 is
17進数のXNUMXに等しい。

文字列 定数
AWK の文字列定数は、二重引用符で囲まれた一連の文字です (例:
"値")。 文字列内では、特定の 脱出 シーケンス C と同様に認識されます。次のとおりです。

\\ 文字通りのバックスラッシュ。

\a 「警告」文字。 通常は ASCII BEL 文字です。

\b バックスペース。

\f フォームフィード。

\n 改行。

\r キャリッジリターン。

\t 水平タブ。

\v 垂直タブ。

\x16進法 数字
に続く XNUMX 進数の文字列で表される文字。 \xにつきましてはあまり気にしないでください。
ISO C では、後続の XNUMX 進数字はすべてエスケープの一部とみなされます。
順序。 (この機能は、言語設計について何かを教えてくれるはずです。
委員会)例えば、 「\x1B」 は ASCII ESC (エスケープ) 文字です。

\DDD 1 桁、2 桁、または 3 桁の XNUMX 進数のシーケンスで表される文字。 例えば、
"\ 033" は ASCII ESC (エスケープ) 文字です。

\c リテラル文字 c.

エスケープ シーケンスは、定数の正規表現内で使用することもできます (例:
/[ \t\f\n\r\v]/ 空白文字と一致します)。

互換モードでは、XNUMX 進数および XNUMX 進数のエスケープで表される文字
正規表現定数で使用される場合、シーケンスは文字通りに扱われます。 したがって、 /a\52b/
に相当します /a\*b/.

パターン そして ACTIONS


AWK は行指向の言語です。 パターンが最初にあり、その後にアクションが続きます。 アクション
ステートメントは で囲まれています { & }。 パターンが欠落しているか、アクションが欠落している可能性があります。
もちろん、両方が欠けているわけではありません。 パターンが見つからない場合、アクションが実行されます
入力のすべてのレコードに対して。 欠落しているアクションは以下と同等です

{ 印刷 }

レコード全体を出力します。

コメントはで始まります # 文字を入力し、行末まで続けます。 空白行
ステートメントを区切るために使用できます。 通常、ステートメントは改行で終わりますが、
これは、カンマで終わる行には当てはまりません。 {, ?, :, &&または ||。 で終わる行 do
or ほかに また、ステートメントは自動的に次の行に続きます。 の
他の場合は、行を「\」で終わらせることで継続できます。この場合、改行は
無視されます。

複数のステートメントを「;」で区切って XNUMX 行に記述することができます。 これに該当するのは、
パターンとアクションのペアのアクション部分内のステートメントの両方 (通常の場合)、および
パターンアクションステートメント自体に。

パターン
AWK パターンは次のいずれかになります。

ベギン
終わり
ファイルの開始
エンドファイル
/レギュラー 表現/
リレーショナル 表現
パターン && パターン
パターン || パターン
パターン ? パターン : パターン
(パターン)
! パターン
pattern1, pattern2

ベギン & 終わり は、入力に対してテストされない XNUMX つの特別な種類のパターンです。
すべてのアクション部分 ベギン パターンは、すべてのステートメントが結合されたかのようにマージされます。
一枚で書かれた ベギン ルール。 これらは、入力が読み取られる前に実行されます。
同様に、すべての 終わり ルールはマージされ、すべての入力が使い果たされたときに実行されます(または
いつ 終了する ステートメントが実行されます)。 ベギン & 終わり 他のパターンと組み合わせることはできません
パターン式のパターン。 ベギン & 終わり パターンに欠落しているアクション部分があってはなりません。

ファイルの開始 & エンドファイル 追加の特別なパターンであり、その本体は前に実行されます。
各コマンドライン入力ファイルの最初のレコードを読み取り、最後のレコードを読み取った後
各ファイルの。 内部 ファイルの開始 ルール、値 エラー番号 の場合は空の文字列になります
ファイルは正常に開かれました。 それ以外の場合は、ファイルに何らかの問題があり、
コードは使用する必要があります 次のファイル それをスキップします。 それが行われていない場合は、 ガック いつもの致命的を引き起こす
開けないファイルのエラー。

/レギュラー 表現/ パターンの場合、関連するステートメントが入力ごとに実行されます
正規表現と一致するレコード。 正規表現は以下のものと同じです。
egrep(1)を以下にまとめます。

A リレーショナル 表現 以下のセクションで定義されている演算子のいずれかを使用できます。
行動。 これらは通常、特定のフィールドが特定の正規表現と一致するかどうかをテストします。

  &&, ||, ! 演算子はそれぞれ論理 AND、論理 OR、論理 NOT です。
C と同様に短絡評価を行い、さらに多くの結合を行うために使用されます。
プリミティブなパターン表現。 ほとんどの言語と同様に、括弧を使用して変更することができます。
評価の順番。

  ?: 演算子は C の同じ演算子と似ています。最初のパターンが true の場合、
テストに使用されるパターンは XNUMX 番目のパターン、それ以外の場合は XNUMX 番目のパターンです。 そのうちの XNUMX つだけ
XNUMX 番目と XNUMX 番目のパターンが評価されます。

  pattern1, pattern2 式の形式は と呼ばれます 範囲 パターン。 全部一致してるよ
一致するレコードで始まるレコードを入力します pattern1、レコードまで継続
マッチする pattern2、包括的。 他の種類のパターンとは組み合わせません
式です。

レギュラー
正規表現は、次のような拡張タイプです。 egrep。 それらは文字で構成されています
次のように:

c 非メタ文字と一致します c.

\c リテラル文字と一致します c.

. どの文字にもマッチします 配合工業用化学製品の 改行。

^ 文字列の先頭と一致します。

$ 文字列の末尾と一致します。

[ABC...] 文字リスト: 任意の文字と一致します。 ABC...。 を含めることができます。
文字の範囲を指定するには、ダッシュで区切ります。

[^ABC...] 否定文字リスト: を除く任意の文字に一致します。 ABC....

r1|r2 代替: いずれかに一致します r1 or r2.

r1r2 連結: 一致 r1、次いで r2.

r+ XNUMX つ以上一致 r's。

r* XNUMX 個以上の一致 r's。

r? XNUMX または XNUMX と一致します r's。

(r) グループ化: 一致 r.

r{n}
r{n,}
r{n,m} 中括弧内の XNUMX つまたは XNUMX つの数字は、 インターバル 表現。 もしあれば
中括弧内の XNUMX つの数字、その前の正規表現 r 繰り返されます n
回。 カンマで区切られた XNUMX つの数値がある場合、 r 繰り返されます n 〜へ m
回。 数値が XNUMX つあり、その後にカンマが続く場合は、 r 少なくとも繰り返される
n 回。

\y 単語の先頭または末尾にある空の文字列と一致します。

\B 単語内の空の文字列と一致します。

\< 単語の先頭にある空の文字列と一致します。

\> 単語の末尾にある空の文字列と一致します。

\s 任意の空白文字と一致します。

\S 空白以外の文字と一致します。

\w 単語を構成する任意の文字 (文字、数字、またはアンダースコア) と一致します。

\W 単語を構成しない任意の文字と一致します。

\` バッファー (文字列) の先頭にある空の文字列と一致します。

\' バッファの末尾にある空の文字列と一致します。

文字列定数で有効なエスケープ シーケンス (「 文字列 定数)も
正規表現では有効です。

文字 クラス は、POSIX 標準で導入された機能です。 文字クラスとは、
特定の属性を持つ文字のリストを記述するための特別な表記法ですが、
実際の文字自体は国ごとに異なる場合があります。
文字セットから文字セットへ。 たとえば、アルファベットとは何かという概念
アメリカとフランスでは性格が違います。

文字クラスは正規表現でのみ有効です 内部 文字のかっこ
リスト。 文字クラスは次のもので構成されます [:、クラスを示すキーワード、および :]を選択します。
POSIX 標準で定義されている文字クラスは次のとおりです。

[:alnum:] 英数字。

[:アルファ:] アルファベット文字。

[:空欄:] スペースまたはタブ文字。

[:cntrl:] コントロールキャラクター。

[:桁:] 数字。

[:グラフ:] 印刷可能かつ表示可能な文字。 (スペースは印刷可能ですが、印刷できません)
見える一方で、 a 両方。)

[:低い:] 小文字のアルファベット。

[:print:] 印刷可能な文字 (制御文字ではない文字)

[:punct:] 句読点文字(文字、数字、制御文字以外の文字)
文字、またはスペース文字)。

[:スペース:] スペース文字 (スペース、タブ、フォームフィードなど)。

[:アッパー:] 大文字のアルファベット。

[:x桁:] XNUMX 進数の文字。

たとえば、POSIX 標準が導入される前は、英数字と一致させるには次のようにする必要がありました。
書かなければならなかった /[A-Za-z0-9]/。 文字セットに他のアルファベット文字が含まれている場合は、
これはそれらと一致せず、文字セットが ASCII と異なる照合を行う場合、これは
ASCII 英数字とさえ一致しない可能性があります。 POSIX 文字クラスを使用すると、
あなたは書ける /[[:alnum:]]/、これは次の英字と数字に一致します。
あなたのキャラクターセットが何であっても。

文字リストには、さらに XNUMX つの特別なシーケンスが表示されます。 これらは非 ASCII に適用されます
文字セット。単一のシンボル (と呼ばれる) を含めることができます。 照合 要素は)それは
複数の文字、および複数の文字で表されます。
と同等 照合、または並べ替えの目的。 (例: フランス語では、普通の「e」と
重アクセント記号「`」は同等です。)

照合記号
照合シンボルは、次のように囲まれた複数文字の照合要素です。 [. & .].
たとえば、 ch が照合要素である場合、 [[.ch.]] は正規表現です
これはこの照合要素と一致しますが、 [チ] は正規表現です
どちらかに一致します c or h.

等価クラス
等価クラスは、次のような文字のリストに対するロケール固有の名前です。
同等。 名前は で囲まれています [= & =]。 たとえば、名前は e かもしれません
「e」、「´」、「`」のすべてを表すために使用されます。 この場合、 [[=e=]] 常連です
次のいずれかに一致する式 e, えーまたは e`.

これらの機能は、英語以外を話すロケールでは非常に価値があります。 ライブラリの機能
それ ガック 正規表現のマッチングに使用されますが、現在は POSIX 文字のみを認識します
クラス; 照合記号や等価クラスは認識されません。

  \y, \B, \<, \>, \s, \S, \w, \W, \`, \' 演算子は以下に固有です ガック; 彼らです
GNU 正規表現ライブラリの機能に基づいた拡張子。

さまざまなコマンド ライン オプションで方法を制御します ガック 文字を通常通りに解釈します
式。

オプションなし
デフォルトの場合、 ガック POSIX 正規表現のすべての機能を提供します
および上記の GNU 正規表現演算子。

--posix
POSIX 正規表現のみがサポートされており、GNU 演算子は特別ではありません。
(例えば、 \w リテラルに一致します w).

- 伝統的
従来のUNIX awk 正規表現が一致します。 GNU 演算子はそうではありません。
特殊な式や間隔式は使用できません。 XNUMX進数で記述される文字
XNUMX 進数のエスケープ シーケンスは、たとえ表現されていたとしても文字通りに扱われます。
正規表現のメタキャラクター。

--再間隔
次の場合でも、正規表現で間隔表現を許可します。 - 伝統的 されています



アクションステートメントは中括弧で囲まれています。 { & }。 アクションステートメントは通常のもので構成されます
ほとんどの言語に見られる代入文、条件文、およびループ文。 オペレーターの方々、
使用可能な制御ステートメントと入出力ステートメントは、C のものに倣ってパターン化されています。

オペレーター
AWK の演算子を優先順位の高い順に示します。

(...) グループ化

$ フィールド参照。

++ -- 前置と後置の両方のインクリメントとデクリメント。

^ べき乗 (** を使用することもできます。 ** = 代入演算子の場合)。

+ - ! 単項プラス、単項マイナス、論理否定。

* / % 乗算、除算、および剰余。

+ - 加減。

スペース 文字列の連結。

| |& パイプされた I/O ゲットライン, 印刷, printf.

< > <= >= != ==
通常の関係演算子。

~ !~ 正規表現一致、否定一致。 注意: 定数の正規を使用しないでください。
式(/ふー/) a の左側 ~ or !~。 XNUMX つだけを使用してください
右側。 表現 /ふー/ ~ EXP と同じ意味です (($0 ~
/ふー/) ~ EXP)。 これは通常です 何をしたい。

in 配列のメンバーシップ。

&& 論理積。

|| 論理和。

?: C の条件式。 これには次のような形式があります 式1 ? 式2 : 式3。 場合
式1 が true の場合、式の値は 式2、そうでない場合は、 式3.
そのうちの XNUMX つだけ 式2 & 式3 評価されます。

= += -= *= /= %= ^=
割り当て。 どちらも絶対代入 (VAR = ) および演算子の割り当て
(他の形式) がサポートされています。

管理 ステートメント
制御ステートメントは次のとおりです。

if (条件) ステートメント [ ほかに ステートメント ]
while (条件) ステートメント
do ステートメント while (条件)
for (式1; 式2; 式3) ステートメント
for (VAR in 配列) ステートメント
破る
続ける
削除 配列[index]
削除 配列
終了する [ 表現 ]
{ }
スイッチ (表現) {
場合 |正規表現 : ステートメント
...
[ デフォルト: ステートメント ]
}

I / O ステートメント
入出力ステートメントは次のとおりです。

選ぶ(file [, ]) ファイル、パイプ、またはコプロセスを閉じます。 オプションの する必要があります
コプロセスへの双方向パイプの一端を閉じるときに使用されます。 それ
文字列値である必要があります。 "に" or "から".

ゲットライン 作成セッションプロセスで $0 次の入力レコードから。 設定 NF, NR, FNR, RT.

ゲットライン <file 作成セッションプロセスで $0 次のレコードから file; 設定 NF, RT.

ゲットライン VAR 作成セッションプロセスで VAR 次の入力レコードから。 設定 NR, FNR, RT.

ゲットライン VAR <file 作成セッションプロセスで VAR 次のレコードから file, RT.

command | ゲットライン [VAR]
ラン command 出力をパイプして次のいずれかにします $0 or VAR、上記のように、そして
RT.

command |& ゲットライン [VAR]
ラン command コプロセスとして出力をパイプします。 $0 or VAR,
上記のように、そして RT。 コプロセスは、 ガック 拡大。 ( command できる
ソケットにもなります。 サブセクションを参照してください スペシャル File 、 未満。)

次の 現在の入力レコードの処理を停止します。 次の入力レコードは
読み取りが行われ、AWK の最初のパターンから処理が再開されます。
プログラム。 入力データの終わりに達すると、 ガック どれかを実行します
終わり ルール。

次のファイル 現在の入力ファイルの処理を停止します。 次に読み取られる入力レコード
次の入力ファイルから取得されます。 ファイル名 & アルギンド 更新され、
FNR は 1 にリセットされ、処理は最初のパターンからやり直します。
AWKプログラムで。 入力データの終わりに達すると、 ガック
どれかを実行します 終わり ルール。

印刷 現在のレコードを印刷します。 出力レコードは次の文字で終了します。
の値 ORS.

印刷 式リスト 式を印刷します。 各式は次の値で区切られます。
FSO。 出力レコードは次の値で終了します。 ORS.

印刷 式リスト >file 式を印刷します file。 各式は次の記号で区切られます。
の値 FSO。 出力レコードは次の値で終了します。
ORS.

printf ふむ、 式リスト フォーマットして印刷します。 見る   printf ステートメント下記。

printf ふむ、 式リスト >file
フォーマットして印刷する file.

システム(コマンドライン) コマンドを実行する コマンドライン、終了ステータスを返します。 (これは、
非 POSIX システムでは使用できません。)

fflush([file]) 開いている出力ファイルまたはパイプに関連付けられているバッファをフラッシュします。 file.
If file が見つからないか、null 文字列の場合は、開いているすべてをフラッシュします
出力ファイルとパイプ。

追加の出力リダイレクトが許可されるのは、 印刷 & printf.

印刷 ... >> file
出力を file.

印刷 ... | command
パイプに書き込みます。

印刷 ... |& command
データをコプロセスまたはソケットに送信します。 (サブセクションも参照してください) スペシャル File ,
以下。)

  ゲットライン コマンドは成功すると 1、ファイルの終わりでは 0、エラーの場合は -1 を返します。 に応じて
エラー、 エラー番号 は、問題を説明する文字列に設定されます。

注意: 双方向ソケットのオープンに失敗すると、致命的ではないエラーが返されます。
呼び出し関数。 パイプ、コプロセス、またはソケットを使用して ゲットライン、またはから 印刷 or
printf ループ内で、あなたは しなければなりません つかいます 閉じる() コマンドの新しいインスタンスを作成するか、
ソケット。 AWK はパイプ、ソケット、コプロセスが戻ったときにそれらを自動的に閉じません。
終了後。

  printf ステートメント
の AWK バージョン printf ステートメントと sprintf() 関数 (以下を参照) を受け入れます
次の変換仕様の形式:

%c 単一の文字。 引数が次のように使用される場合、 %c 数値の場合、
文字とプリントが施されています。 それ以外の場合、引数は文字列とみなされ、
その文字列の最初の文字のみが出力されます。

%d, %i XNUMX 進数 (整数部分)。

%e, %E [ 形式の浮動小数点数-]d.DDDDDDe[+-]ddを選択します。 %E フォーマットの使用 E
e.

%f, %F [ 形式の浮動小数点数-]DDD.DDDDDD。 システムライブラリがサポートしている場合
それ、 %F も利用可能です。 これは次のようなものです %f、ただし、特殊な場合は大文字を使用します
「非数値」および「無限大」の値。 もしも %F 利用できません、 ガック 使用されます %f.

%g, %G   %e or %f 有意でないゼロを含む短い方の変換
抑制された。 の %G フォーマットの使用 %E %e.

%o 符号なし XNUMX 進数 (整数でもあります)。

%u 符号なし XNUMX 進数 (ここでも整数)。

%s 文字列。

%x, %X 符号なし XNUMX 進数 (整数)。 の %X フォーマットの使用 ABCDEF
abcdef.

%% シングル % キャラクター; 引数は変換されません。

オプションの追加パラメータは、 % そして制御文字:

カウント$ カウント書式設定のこの時点での ' 番目の引数。 これはと呼ばれます
ポジショナル 指定子 主に、の翻訳版での使用を目的としています。
AWK プログラムの元のテキストではなく、書式設定文字列です。 それは ガック
拡大。

- 式はフィールド内で左揃えにする必要があります。

スペース 数値変換の場合は、正の値の前にスペースを付け、負の値の前に付けます。
マイナス記号付き。

+ 幅修飾子 (以下を参照) の前に使用されるプラス記号は、常に幅を指定することを示します。
書式設定されるデータが正の場合でも、数値変換の場合は符号を使用します。 の +
スペース修飾子をオーバーライドします。

# 特定の制御文字には「代替形式」を使用します。 ために %o、先頭を指定します
ゼロ。 ために %x, %X、先頭を指定します 0x or 0X ゼロ以外の結果の場合。 ために %e, %E,
%f & %F、結果には常に小数点が含まれます。 ために %g, %G、末尾
ゼロは結果から削除されません。

0 一流 0 (ゼロ) はフラグとして機能し、出力にパディングする必要があることを示します。
スペースの代わりにゼロ。 これは数値出力形式にのみ適用されます。 これ
このフラグは、フィールド幅が出力される値よりも広い場合にのみ効果があります。

' 一重引用符で指示します。 ガック ロケールの千の位の区切り文字を挿入するには
文字を XNUMX 進数に変換し、ロケールの小数点も使用する
浮動小数点形式の文字。 これには、正しいロケールのサポートが必要です。
C ライブラリと現在のロケールの定義にあります。

フィールドはこの幅までパディングする必要があります。 通常、フィールドには次の値が埋め込まれます。
スペース。 とともに 0 フラグの場合、ゼロが埋め込まれます。

.プレ 印刷時に使用する精度を指定する数値。 のために %e, %E, %f &
%F、形式の場合、これは右側に印刷する桁数を指定します。
小数点。 のために %g, %G フォーマットの最大数を指定します。
有効数字。 のために %d, %i, %o, %u, %x, %X 形式を指定する場合、
印刷する最小桁数。 ために %s、最大数を指定します。
文字列から出力される文字。

ダイナミック & プレ ISO C の機能 printf() ルーチンがサポートされています。 あ *
どちらかの代わりに or プレ 仕様により、値が次から取得されます。
引数リストを printf or sprintf()。 動的位置指定子を使用するには
幅または精度を指定するには、 カウント$ 後に * フォーマット文字列内。 例えば、
"%3$*2$.*1$s".

スペシャル File
どちらからでも I/O リダイレクトを行う場合 印刷 or printf ファイルに書き込むか、 ゲットライン から
ファイル、 ガック 特定の特殊なファイル名を内部的に認識します。 これらのファイル名によりアクセスが許可されます
から継承したファイル記述子を開くには ガックの親プロセス (通常はシェル)。 これらは
ファイル名は、データ ファイルに名前を付けるためにコマンド ラインで使用することもできます。 ファイル名は次のとおりです。

- 標準入力。

/ dev / stdin 標準入力。

/ dev / stdout 標準出力。

/ dev / stderr 標準エラー出力。

/ dev / fd /n オープンファイル記述子に関連付けられたファイル n.

これらは、エラー メッセージに特に役立ちます。 例えば:

印刷 "あなた 吹いた それ!" > "/ dev / stderr"

それ以外の場合は使用する必要がありますが、

印刷 "あなた 吹いた それ!" | "猫 1>&2"

次の特別なファイル名は、 |& 作成用のコプロセス オペレーター
TCP/IP ネットワーク接続:

/inet/tcp/ポート/ロスト/報告
/inet4/tcp/ポート/ロスト/報告
/inet6/tcp/ポート/ロスト/報告
ローカルポートでの TCP/IP 接続用のファイル ポート リモートホストへ ロスト リモートで
ポート 報告。 のポートを使用します 0 システムにポートを選択させます。 使用 /inet4 強制的に
IPv4接続、および /inet6 IPv6 接続を強制します。 プレーン /inet 使用
システムのデフォルト (おそらく IPv4)。

/inet/udp/ポート/ロスト/報告
/inet4/udp/ポート/ロスト/報告
/inet6/udp/ポート/ロスト/報告
同様ですが、TCP/IP の代わりに UDP/IP を使用します。

数値の 機能
AWK には次の組み込み算術関数があります。

atan2(y, x) の逆正接を返します y / x ラジアンで。

cos() の余弦を返します 、単位はラジアンです。

exp() 指数関数。

int() 整数に切り捨てます。

ログ() 自然対数関数。

rand() 乱数を返す N、0 ≤ となる 1 と 0 の間の値 N <1。

罪() の正弦を返します 、単位はラジアンです。

sqrt() の平方根を返します .

srand([])   乱数発生器の新しいシードとして。 いいえの場合 is
指定されている場合は、時刻を使用します。 ランダムの前のシードを返します
数値ジェネレータ。

文字列 機能
ゴーク には次の組み込み文字列関数があります。

盛り合わせ(s [, d [, ]]) ソース配列内の要素の数を返します。 s。 並べ替える
の内容 s ガックの値を比較するための通常のルール、および
ソートされた値のインデックスを置き換えます s シーケンシャル付き
1 から始まる整数。オプションの宛先配列の場合 d is
指定された、最初の重複 sd、並べ替えます d、残す
ソース配列のインデックス s 変更なし。 オプションの文字列
方向と比較モードを制御します。 の有効な値
有効な文字列のいずれかです PROCINFO["sorted_in"]。 それ
次のようなユーザー定義の比較関数の名前も指定できます。
に記載 PROCINFO["sorted_in"].

盛り合わせ(s [, d [, ]])
ソース配列内の要素の数を返します。 s。 動作
と同じです アソート()、ただし、配列は 索引  
配列値ではなく並べ替えに使用されます。 完了すると、配列は次のようになります。
数値的にインデックス付けされており、値は元の値です。
インデックス。 元の値は失われます。 したがって、XNUMX番目を提供します
オリジナルを保持したい場合は配列を使用します。 の目的
オプションの文字列 で説明されているものと同じです アソート() 上記。

ゲンサブ(r, s, h [, t]) 目的の文字列を検索する t 正規表現の一致の場合
r。 場合 h で始まる文字列です g or G、すべてを置き換えます
の一致 r   s。 さもないと、 h はどれかを示す数字です
の試合 r 交換する。 もしも t 付属されていないので、使用してください $0 を代わりにお使いください。
置換テキスト内 s、 シーケンス \nここで、 n 数字です
1 から 9 まで。一致したテキストのみを示すために使用できます。
  n' 番目の括弧内の部分式。 シーケンス \0 表し
文字と同様に、一致したテキスト全体 &。 とは異なり サブ()
& gsub()、変更された文字列が結果として返されます。
関数、および元のターゲット文字列は 変更されました。

gsub(r, s [, t]) 正規表現に一致する各部分文字列について r 文字列内
t、文字列を置き換えます s、の数を返します
代替品。 もしも t 付属されていないので、使用してください $0 & セクションに
置換テキストは実際にあったテキストに置き換えられます。
一致しました。 使用 \& リテラルを取得するには &。 (これは次のように入力する必要があります
「\\&」; 湖 ガウク: 効果的な AWK プログラミング より充実した議論のために
のルールの &の置換テキスト内の ' とバックスラッシュ
サブ(), gsub(), gensub().)

索引(s, t) 文字列のインデックスを返します t 文字列内 s、または 0 の場合 t ではありません
現在。 (これは、文字インデックスが XNUMX から始まることを意味します。)
正規表現定数を使用すると致命的なエラーになります t.

長さ([s]) 文字列の長さを返します s、または長さ $0 if s ではありません
供給されます。 非標準の拡張として、配列引数を使用すると、
長さ() 配列内の要素の数を返します。

マッチ(s, r [, a]) の位置を返します s ここで正規表現 r 発生する、または
0 if r が存在しない場合は、の値を設定します 再スタート & 長さ.
引数の順序は、 ~ オペレーター:
STR ~ re。 配列の場合 a 供給される、 a がクリアされてから要素がクリアされます
1〜 n の部分で満たされています。 s 一致する
対応する括弧で囲まれた部分式 r。 0番目の要素
of a の部分が含まれています s レギュラー全体と一致
表現 r。 下付き文字 a[n, "始める"], a[n, "長さ"]
文字列の開始インデックスと長さをそれぞれ指定します。
一致する各部分文字列の。

パットスプリット(s, a [, r [, 分離液]])
文字列を分割する s 配列に a そして区切り文字の配列 分離液
正規表現で r、フィールドの数を返します。
要素の値は次の部分です。 s 一致した r。 の価値
セップス[i] の前に表示される区切り文字です a[i+1]。 場合 r
省略、 FPAT 代わりに使用されます。 配列 a & 分離液  
まずはクリアしました。 分割はフィールド分割と同じように動作します。
  FPAT、上で説明した。

スプリット(s, a [, r [, 分離液]])
文字列を分割する s 配列に a そして区切り文字の配列 分離液
正規表現で r、フィールドの数を返します。 もしも
r 省略、 FS 代わりに使用されます。 配列 a & 分離液  
まずはクリアしました。 セップス[i] と一致するフィールド区切り文字です r
の間に a[i] & a[i+1]。 場合 r は単一のスペースであり、その後に続きます
中の空白 s 余分な配列要素に入ります 0月[XNUMX] &
末尾の空白は追加の配列要素に入ります セップス[n],
コラボレー n の戻り値です スプリット(s, a, r, 分離液)。 分割
は、上で説明したフィールド分割と同じように動作します。

sprintf(FMT, 式リスト) 印刷物 式リスト による FMT、結果の文字列を返します。

ストルトナム(STR) 調べる STR、その数値を返します。 もしも STR で始まる
主要な 0、XNUMX 進数として扱います。 もしも STR で始まる
主要な 0x or 0X、XNUMX 進数として扱います。 さもないと、
それが XNUMX 進数であると仮定します。

サブ(r, s [, t]) と同じように gsub()ただし、最初に一致した部分文字列のみを置き換えます。

substr(s, i [, n]) 最大でも返します n-の文字部分文字列 s 始まる i。 場合 n
が省略されている場合は、残りを使用してください s.

tolower(STR) 文字列のコピーを返す STR、すべて大文字
in STR 対応する小文字に変換されます。
アルファベット以外の文字は変更されません。

toupper(STR) 文字列のコピーを返す STR、すべて小文字
in STR 対応する大文字に変換されます。
アルファベット以外の文字は変更されません。

ゴーク マルチバイトを認識します。 この意味は index(), 長さ(), substr() & マッチ() すべての仕事
バイトではなく文字に関して。

Time 機能
AWK プログラムの主な用途の XNUMX つは、時刻を含むログ ファイルを処理することです。
スタンプ情報、 ガック タイムスタンプを取得するための次の機能を提供します。
それらをフォーマットします。

mktime(日付仕様)
ターン 日付仕様 によって返されたものと同じ形式のタイムスタンプに変換されます。 システムタイム(),
結果を返します。 の 日付仕様 次の形式の文字列です YYYY MM DD HH MM SS[
夏時間]。 文字列の内容は、次のことを表す XNUMX つまたは XNUMX つの数字です。
それぞれ、世紀を含む通年、1 から 12 までの月、日
月は 1 ~ 31、時刻は 0 ~ 23、分は 0 ~
59、0 番目の 60 ~ XNUMX、およびオプションの夏時間フラグ。 その価値
これらの数値は指定された範囲内である必要はありません。 たとえば、XNUMX時間
-1 は午前 1 時 XNUMX 時間前を意味します。 原点ゼロのグレゴリオ暦は、
年 0 が年 1 の前、年 -1 が年 0 の前であると仮定されます。時刻は次のとおりです。
ローカルタイムゾーンであるとみなされます。 夏時間フラグが正の場合、
時間は夏時間であると想定されます。 ゼロの場合、時間は次のようにみなされます。
標準時であること。 負の場合 (デフォルト)、 mktime() 決定しようとします
指定された時間に夏時間が有効かどうか。 もしも 日付仕様
十分な要素が含まれていない場合、または結果の時間が範囲外の場合、
mktime() -1を返します。

strftime([形式でアーカイブしたプロジェクトを保存します. [, タイムスタンプ[, utc-フラグ]]])
フォーマット タイムスタンプ の仕様に従って 形式でアーカイブしたプロジェクトを保存します.。 場合 utc-フラグ is
存在し、非ゼロまたは非 null の場合、結果は UTC で表示され、それ以外の場合は結果
は現地時間です。 の タイムスタンプ によって返されるものと同じ形式である必要があります
システムタイム()。 場合 タイムスタンプ が欠落している場合は、現在の時刻が使用されます。 もしも 形式でアーカイブしたプロジェクトを保存します.
がありません。デフォルトの形式は次の出力と同等です。 date(1)を使用します。 の
デフォルトの形式は以下で利用可能です PROCINFO["strftime"]。 仕様を参照してください
  strftime() 保証された形式変換のための ISO C の関数
利用可能になります。

システムタイム() 現在の時刻をエポックからの秒数として返します。
(POSIX システムでは 1970-01-01 00:00:00 UTC)。

ビット 操作 機能
ゴーク は、次のビット操作関数を提供します。 これらは二重に変換することで機能します。
精度の浮動小数点値を uintmax_t 整数、演算を実行し、その後
結果を浮動小数点に変換し直します。 機能は次のとおりです。

と(v1, v2 [、...]) 引数リストで指定された値のビット単位の AND を返します。
少なくとも XNUMX つある必要があります。

完了(ヴァル) のビット単位の補数を返します。 ヴァル.

lshift(ヴァル, カウント) の値を返す ヴァル、左にシフト カウント ビット。

また(v1, v2 [、...]) 引数リストで指定された値のビット単位の OR を返します。
少なくとも XNUMX つある必要があります。

rshift(ヴァル, カウント) の値を返す ヴァル、右にシフト カウント ビット。

xor(v1, v2 [、...]) 引数リストで指定された値のビットごとの XOR を返します。
少なくとも XNUMX つある必要があります。

タイプ 演算
次の関数は多次元配列で使用します。

isarray(x)
次の場合にtrueを返します x 配列である場合、それ以外の場合は false です。

国際化 機能
次の関数は、文字列を翻訳するために AWK プログラム内から使用できます。
実行時。 詳細については、を参照してください。 ガウク: 効果的な AWK プログラミング.

バインドテキストドメイン(ディレクトリにジョブを開始します。 [, ドメイン])
ディレクトリを指定します。 ガック を探します .gmo そうでない場合に備えてファイル、または
「標準」の場所 (テスト中など) に配置することはできません。 戻ります
ここのディレクトリ ドメイン 「縛られている」です。
デフォルト ドメイン の値です テキストドメイン。 場合 ディレクトリにジョブを開始します。 はヌル文字列です
("")、その後 バインドテキストドメイン() 指定されたオブジェクトの現在のバインディングを返します。 ドメイン.

dcgettext(文字列 [, ドメイン [, カテゴリ]])
の翻訳を返します 文字列 テキストドメイン内 ドメイン ロケールカテゴリの場合
カテゴリ。 のデフォルト値 ドメイン の現在値です テキストドメインを選択します。
のデフォルト値 カテゴリ is 「LC_メッセージ」.
値を指定すると、 カテゴリ、既知のいずれかに等しい文字列である必要があります。
で説明されているロケール カテゴリ ガウク: 効果的な AWK プログラミング。 あなたもそうしなければなりません
テキストドメインを指定します。 使用 テキストドメイン 現在のドメインを使用したい場合。

dcngettext(string1, string2, [, ドメイン [, カテゴリ]])
に使用される複数形を返します の翻訳の string1 & string2 in
テキストドメイン ドメイン ロケールカテゴリの場合 カテゴリ。 のデフォルト値 ドメイン is
現在の値 テキストドメイン。 のデフォルト値 カテゴリ is 「LC_メッセージ」.
値を指定すると、 カテゴリ、既知のいずれかに等しい文字列である必要があります。
で説明されているロケール カテゴリ ガウク: 効果的な AWK プログラミング。 あなたもそうしなければなりません
テキストドメインを指定します。 使用 テキストドメイン 現在のドメインを使用したい場合。

ユーザー定義の 関数


AWK の関数は次のように定義されます。

function (パラメーター リスト) { }

関数は、パターンまたはいずれかの式内から呼び出されたときに実行されます。
行動。 関数呼び出しで指定された実際のパラメータは、インスタンスを作成するために使用されます。
関数内で宣言された仮パラメータ。 配列は参照によって渡されます。
変数は値によって渡されます。

関数はもともと AWK 言語の一部ではなかったので、ローカルの
変数はかなり扱いにくいです。変数はパラメータ リスト内の追加パラメータとして宣言されます。
規則では、ローカル変数と実際のパラメータを余分なスペースで区切ります。
パラメータリスト。 例えば:

function f(p, q, a, b) # a & b   ローカル
{
...
}

/ abc / { ... ; f(1, 2) ; ... }

関数呼び出しの左括弧は関数の直後に指定する必要があります
空白を挟まずに名前を入力します。 これにより、構文上の曖昧さが回避されます。
連結演算子。 この制限は、リストされている組み込み関数には適用されません。
上記。

関数は相互に呼び出したり、再帰的になったりする場合があります。 ローカルとして使用される関数パラメータ
変数は、関数呼び出し時に NULL 文字列と数値 XNUMX に初期化されます。

  return 関数から値を返すには。 いいえの場合、戻り値は未定義です
値が指定された場合、または関数が終了から「落ちる」ことによって返された場合。

として ガック 拡張子として、関数を間接的に呼び出すことができます。 これを行うには、次の名前を割り当てます。
変数に対して文字列として呼び出される関数。 次に、変数を次のように使用します
接頭辞が付いている関数の名前でした。 @ 次のように署名します。
function myfunc()
{
印刷 「私の機能 呼ばれた」
...
}

{ ...
ザファンク = 「マイファンク」
@the_func() # コール   ザファンク 〜へ マイファンク
...
}
バージョン 4.1.2 では、これはユーザー定義関数、組み込み関数、および
拡張機能。

If --糸くず 提供されており、 ガック 解析時の未定義関数の呼び出しについて警告します。
実行時の代わりに。 実行時に未定義の関数を呼び出すと致命的なエラーになります。

抽出時間と ファンク の代わりに使用できます functionただし、これは非推奨です。

動的に ローディング NEW 関数


新しい組み込み関数を実行中の関数に動的に追加できます。 ガック 通訳者と
@ロード 声明。 詳細については、このマニュアル ページの範囲を超えています。 見る ガウク:
効果的な AWK プログラミング.

信号


  ガック プロファイラは XNUMX つの信号を受け入れます。 シグSR1 プロファイルと機能をダンプします
プロファイル ファイルへの呼び出しスタック。次のいずれかです。 awkprof.out、または任意の名前のファイル
- プロフィール オプション。 その後も引き続き実行されます。 シグアップ 原因 ガック をダンプする
プロファイルと関数呼び出しスタックを実行して終了します。

国際化


文字列定数は、二重引用符で囲まれた一連の文字です。 英語以外の場合
発話環境では、AWK プログラム内の文字列を要求するものとしてマークすることができます。
現地の自然言語への翻訳。 このような文字列は、AWK プログラム内で次のようにマークされます。
先頭のアンダースコア (「_」)。 例えば、

ガック '始める { 印刷 "こんにちは、 世界" }'

常に印刷します こんにちは、 世界。 しかし、

ガック '始める { 印刷 _"こんにちは、 世界" }'

印刷するかもしれない ボンジュール、 モンド フランスで。

ローカライズ可能な AWK プログラムを作成して実行するには、いくつかの手順が必要です。

1.を追加します ベギン に値を割り当てるアクション テキストドメイン テキストドメインを設定する変数
プログラムに関連付けられた名前に変更します。

ベギン { テキストドメイン = 「マイプログ」 }

これにより、 ガック 検索する .gmo プログラムに関連付けられたファイル。 これがなければ
ステップ、 ガック 使用 メッセージ テキスト ドメイン (翻訳は含まれない可能性が高い)
あなたのプログラムのために。

2. 翻訳する必要があるすべての文字列を先頭にアンダースコアでマークします。

3.必要に応じて、 dcgettext() および バインドテキストドメイン() プログラム内の関数、
適切に。

4。 実行 ガック --gen-pot -f myprog.awk > myprog.pot を生成する .POT あなたのファイル
プログラム。

5. 適切な翻訳を提供し、対応するファイルをビルドしてインストールします。 .gmo ファイル。

国際化機能については、以下で詳しく説明されています。 ガウク: 効果的な AWK
プログラミング.

POSIX 互換性の確保


主な目標は、 ガック POSIX 標準との互換性だけでなく、
ブライアン・カーニハンの最新バージョン awk。 この目的を達成するために、 ガック 以下を組み込んでいます
AWK ブックでは説明されていないが、Brian の一部であるユーザーに見える機能
カーニハン版の awk、および POSIX 標準に含まれています。

この本では、コマンド ライン変数の代入が次の場合に行われることが示されています。 awk そうでなければだろう
引数をファイルとして開きます。 ベギン ルールが実行されます。 ただし、
以前の実装では、このような割り当てがファイル名の前に現れた場合、
割り当てが発生するだろう   ベギン ルールが実行されました。 アプリケーションが依存するようになった
この機能。" いつ awk ドキュメントに一致するように変更されました。 -v のオプション
アプリケーションに対応するために、プログラムの実行前に変数を割り当てる機能が追加されました。
昔の振る舞いに依存していました。 (この機能は、ベルとベルの両方によって合意されました。
研究室と GNU 開発者。)

引数を処理するとき、 ガック 特別なオプション「--」を使用して終了を通知します。
引数。 互換モードでは、未定義のオプションについて警告しますが、それ以外の場合は無視します。
通常の操作では、このような引数は AWK プログラムに渡されて処理されます。

AWK ブックでは、戻り値は定義されていません。 srand()。 POSIX標準にはそれがあります
使用していたシードを返し、乱数シーケンスを追跡できるようにします。
故に srand() in ガック 現在のシードも返します。

その他の新機能は次のとおりです。 -f オプション(MKSより) awk; の 環境 配列;
  \a, \v エスケープ シーケンス (元々は ガック そしてベルにフィードバックされました
研究所版); の より低い() & トッパー() 組み込み関数 (Bell から)
研究所版); および ISO C 変換仕様 printf (最初に行われた
ベル研究所版)。

歴史的 商品特徴


これまでの AWK 実装には次のような特徴があります。 ガック 対応:可能です
を呼び出す 長さ() 組み込み関数は引数なしだけでなく、引数なしでも
括弧! したがって、

a = 長さ # 神聖な アルゴル 60、 バットマン!

どちらとも同じです

a = 長さ()
a = 長さ($0)

この機能の使用は不適切な行為であり、 ガック 次の場合にその使用について警告を発します。 --糸くず is
コマンドラインで指定します。

GNU 延長


ゴーク POSIX への拡張機能が多すぎる awk。 それらはこの中で説明されています
セクション。 ここで説明されているすべての拡張機能は、次のコマンドを実行することで無効にできます。 ガック
- 伝統的 or --posix オプション。

次の機能 ガック POSIX では使用できません awk.

· で指定されたファイルのパス検索は実行されません。 -f オプション。 したがって、 AWKパス
環境変数は特別なものではありません。

· ファイルをインクルードする機能はありません (ガック's @含む 機構)。

· C で書かれた新しい関数を動的に追加する機能はありません (ガック's @ロード
機構)。

\x エスケープシーケンス。 (無効化された --posix.)

· 後に行を継続する機能 ? & :。 (無効化された --posix.)

· AWK プログラムの XNUMX 進数および XNUMX 進数の定数。

アルギンド, ビンモード, エラー番号, リント, RT & テキストドメイン 変数は特別なものではありません。

無視する 変数とその副作用は利用できません。

フィールド幅 可変幅フィールドと固定幅フィールドの分割。

FPAT フィールド値に基づいた変数とフィールドの分割。

プロシンフォ 配列は使用できません。

・ の用法 RS 正規表現として。

· I/O リダイレクトに使用できる特殊なファイル名は認識されません。

|& コプロセスを作成するための演算子。

ファイルの開始 & エンドファイル 特殊なパターンは使用できません。

· NULL 文字列を値として使用して個々の文字を分割する機能 FS,
そしてXNUMX番目の引数として スプリット().

· オプションの XNUMX 番目の引数 スプリット() 区切り文字を受信します。

· オプションの XNUMX 番目の引数 閉じる() 機能。

· オプションの XNUMX 番目の引数 マッチ() 機能。

· 位置指定子を使用する機能 printf & sprintf().

· 配列を渡す機能 長さ().

と(), アソート(), アソーティ(), バインドテキストドメイン(), 補完(), dcgettext(), dcmgettext(),
gensub(), lshift(), mktime(), または(), パットスプリット(), rshift(), strftime(), ストラトナム(),
システムタイム() & xor() 機能します。

· ローカライズ可能な文字列。

AWK ブックでは、 閉じる() 機能。 ゴーク's 閉じる()
からの値を返します 閉じる(3)、または 閉じる(3)、出力ファイルまたはパイプを閉じるとき、
それぞれ。 入力パイプを閉じるときにプロセスの終了ステータスを返します。 の
指定されたファイル、パイプ、またはコプロセスがオープンされていない場合、戻り値は -1 です。
リダイレクション。

日時 ガック で呼び出されます - 伝統的 オプションの場合、 fs への議論 -F オプションがある
「t」、それでは FS タブ文字に設定されます。 入力することに注意してください ガック -F\t ... 単純に原因となる
シェルは「t」を引用符で囲み、「\t」をシェルに渡しません。 -F オプション。 これは
かなり醜い特殊なケースであり、これはデフォルトの動作ではありません。 この動作も同様です
次の場合に発生します --posix が指定されています。 実際にタブ文字をフィールドとして取得するには
区切り文字には一重引用符を使用することをお勧めします。 ガック -F'\t' ....

ENVIRONMENT 変数


  AWKパス 環境変数を使用して、ディレクトリのリストを提供できます。 ガック
経由で名前が付けられたファイルを検索するときに検索します。 -f、 - ファイル, -i & - 含む オプション。 場合
最初の検索は失敗し、追加後にパスが再度検索されます。 .awk ファイル名に。

  AWクリパス 環境変数を使用して、ディレクトリのリストを提供できます。 ガック
経由で名前が付けられたファイルを検索するときに検索します。 -l & - ロード オプション。

  GAWK_READ_TIMEOUT 環境変数を使用してタイムアウトを指定できます。
端末、パイプ、または双方向通信からの入力を読み取るためのミリ秒 (ミリ秒)
ソケット。

ソケット経由でリモートホストに接続するには、 GAWK_SOCK_RETRIES の数を制御します
再試行、および GAWK_MSEC_SLEEP 再試行の間隔。 間隔は中です
ミリ秒。 サポートしていないシステムの場合 眠る(3)、値は切り上げられます。
整数の秒数。

If POSIXLY_CORRECT 環境内に存在する場合、 ガック まるで次のように動作します --posix 持っていました
コマンドラインで指定されています。 もしも --糸くず 指定されており、 ガック 警告を発します
この旨のメッセージ。

EXIT ステータス


Status 終了する ステートメントが値とともに使用されている場合、 ガック 指定された数値で終了します
それに。

それ以外の場合、実行中に問題がなかった場合は、 ガック C の値で終了します
定数 EXIT_SUCCESS。 通常、これはゼロです。

エラーが発生した場合は、 ガック C 定数の値で終了します EXIT_FAILURE。 これは
通常は XNUMX つです。

If ガック 致命的なエラーのために終了する場合、終了ステータスは 2 です。非 POSIX システムでは、これは
値は以下にマッピングされる可能性があります EXIT_FAILURE.

VERSION 情報


このマニュアルページのドキュメント ガック、バージョン4.1。

作者


UNIXのオリジナルバージョン awk Alfred Aho、Peter によって設計および実装されました。
ワインバーガー氏とベル研究所のブライアン・カーニハン氏。 ブライアン・カーニハンは続けます
それを維持し、向上させます。

フリーソフトウェア財団のポール・ルービン氏とジェイ・フェンラソン氏はこう書いている。 ガック、互換性があるように
オリジナルバージョンの awk 第 XNUMX 版 UNIX で配布されます。 ジョン・ウッズ
多くのバグ修正に貢献しました。 デビッド・トゥルーマン、アーノルド・ロビンスの協力を得て、
ガック 新しいバージョンのUNIXと互換性があります awk。 アーノルド・ロビンスは現在
メンテナ。

見る ガウク: 効果的な AWK プログラミング への貢献者の完全なリストについては、 ガック とその
のドキュメントで詳しく説明されています)。

ジョブの設定方法については、 README 内のファイル ガック メンテナに関する最新情報の配布
および現在サポートされているポート。

バグ レポート


バグを見つけた場合は、 ガックまで電子メールをお送りください。 [メール保護]。 てください。
オペレーティング システムとそのリビジョン、バージョンを含めます。 ガック (339 ガック - バージョン),
コンパイルに使用した C コンパイラ、およびテスト プログラムとデータのサイズ
問題を再現することが可能です。

バグレポートを送信する前に、次のことを行ってください。 まず、次のことを確認します。
の最新バージョン ガック。 多くのバグ (通常は微妙なバグ) がリリースごとに修正されます。
古いものであれば、問題はすでに解決されている可能性があります。 第二に、ご覧ください
環境変数を設定する場合 LC_ALL 〜へ LC_ALL = C 物事があなたのように振る舞う原因となる
予想。 その場合、それはロケールの問題であり、実際にはバグである場合とそうでない場合があります。 最後にお願いします
このマニュアル ページとリファレンス マニュアルを注意深く読んで、考えられる内容が問題であることを確認してください。
バグは単なる言語の癖ではなく、実際に存在します。

何をするにしても、そうしてください NOT にバグレポートを投稿する comp.lang.awk。 一方、 ガック 開発者
時々このニュースグループを読んで、信頼性の低い報告方法があるバグレポートを投稿してください
バグ。 代わりに、上記の電子メール アドレスを使用してください。 本当。

GNU/Linux または BSD ベースのシステムを使用している場合は、次の宛先にバグ レポートを送信してください。
ディストリビューションのベンダー。 それはいいですが、コピーを公式に送ってください
バグレポートが転送される保証はないため、電子メールアドレスも同様です。
  ガック メンテナ。

onworks.net サービスを使用してオンラインで gawk を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad