awk gawk - パターンスキャンおよび処理言語
gawk [ POSIX or GNU style options ] -f program-file [ - - ] file . . .
gawk [ POSIX or GNU style options ] [ - - ] program-text file . . .
Gawk は、GNU プロジェクトによる AWK プログラミング言語の実装です。これは、POSIX 1003.1 標準の言語の定義に準拠しています。このバージョンは、Aho、Kernighan、Weinberger によるAWK プログラミング言語の説明に基づいています。 Gawk は、Brian Kernighan の awk の現在のバージョンにある追加機能と多数の GNU 固有の拡張機能を提供します。
コマンドラインは、gawk 自体のオプション、AWK プログラム テキスト (-f または - -include オプションで指定されていない場合)、およびARGC および ARGV の事前定義された AWK 変数で使用できる値。
このマニュアル ページは意図的にできるだけ簡潔にしています。詳細については、GAWK: 効果的な AWK プログラミングで説明されています。特定の機能の詳細については、そこを参照してください。可能な場合は、マニュアルのオンライン版へのリンクが提供されます。
Gawk オプションは、従来の POSIX スタイルの 1 文字オプション、または GNU スタイルの長いオプションのいずれかです。 POSIX オプションは単一の「-」で始まりますが、長いオプションは「- -」で始まります。長いオプションは、GNU 固有の機能と POSIX で必須の機能の両方に提供されます。
Gawk 固有のオプションは通常、長いオプション形式で使用されます。長いオプションの引数は、スペースを挟まずに = 記号でオプションと結合されるか、次のコマンド ライン引数で指定される場合があります。長いオプションは、省略形が一意である限り省略できます。
さらに、すべての長いオプションには対応する短いオプションがあるため、#! 実行可能スクリプト内からオプションの機能を使用できます。
Gawk は次のオプションを受け入れます。標準オプションが最初にリストされ、次にgawk 拡張機能のオプションが短いオプションのアルファベット順にリストされます。
- -fileprogram-file 最初のコマンドライン引数からではなく、ファイル program-file から AWK プログラム ソースを読み取ります。複数の -f オプションを使用できます。 -f で読み取られたファイルは、暗黙的な @namespace "awk" ステートメントで始まるかのように扱われます。
- -field-separator fs 入力フィールドの区切り文字として fs を使用します (FS 事前定義変数の値)。 。
プログラムの実行を開始する前に、値 val を変数 var に割り当てます。このような変数値は、AWK プログラムのBEGIN ルールで使用できます。
- -characters-as-bytes すべての入力データをシングルバイト文字として扱います。 - -posix オプションはこれをオーバーライドします。
- -traditional互換モードで実行します。互換モードでは、gawk は Brian Kernighan のawk と同じように動作します。 GNU 固有の拡張機能はどれも認識されません。
- -copyright GNU 著作権情報メッセージの短縮版を標準出力に出力し、正常に終了します。
グローバル変数、その型、および最終値のソートされたリストをファイルに出力します。デフォルトのファイルは、現在のディレクトリのawkvars.outです。
AWK プログラムのデバッグを有効にします。デフォルトでは、デバッガーはキーボード (標準入力) から対話的にコマンドを読み取ります。オプションの file 引数は、デバッガが非対話的に実行するコマンドのリストを含むファイルを指定します。
この実行モードでは、gawk は AWK ソース コードをロードし、デバッグ コマンドの入力を求めます。 Gawk は、-f および - -include オプションで提供された AWK プログラム ソースのみをデバッグできます。デバッガについては、GAWK: 効果的な AWK プログラミングに記載されています。 https://www.gnu.org/software/gawk/manual/html_node/Debugger.html#Debugger を参照してください。
- -source プログラム テキスト プログラム テキスト を AWK プログラム ソース コードとして使用します。 -e 経由で指定された各引数は、暗黙的な @namespace "awk" ステートメントで始まるかのように扱われます。
-f と似ていますが、このオプションは最後に処理されるオプションです。これは、URL からコマンド ラインでオプションやソース コード (!) を渡さないようにするために、#! スクリプト、特に CGI アプリケーションで使用する必要があります。このオプションは、コマンドライン変数の割り当てを無効にします。
- -gen-pot AWK プログラムをスキャンして解析し、ローカライズ可能なすべての文字列のエントリを含む GNU .pot (Portable Object Template) 形式のファイルを標準出力に生成します。プログラム。プログラム自体は実行されません。
- -help 利用可能なオプションの比較的短い概要を標準出力に出力します。 GNU コーディング標準に従って、これらのオプションを使用すると、即座に正常に終了します。
awk ソース ライブラリをロードします。これにより、AWKPATH 環境変数を使用してライブラリが検索されます。最初の検索が失敗した場合は、.awk サフィックスを追加した後に再試行されます。ファイルは 1 回だけロードされ (つまり、重複は削除されます)、コードはメイン プログラム ソースを構成しません。 - -include で読み取られたファイルは、暗黙的な @namespace "awk" ステートメントで始まるかのように扱われます。
- -trace プログラムの実行時に実行される内部バイト コード名を出力します。トレースは標準エラーに出力されます。出力では各「オペコード」 の前に+ 記号が付きます。
- -load lib 共有ライブラリ lib から gawk 拡張機能をロードします。これにより、AWKLIBPATH 環境変数を使用してライブラリが検索されます。最初の検索が失敗した場合は、プラットフォームのデフォルトの共有ライブラリ サフィックスを追加した後、別の検索が試行されます。ライブラリ初期化ルーチンの名前は dl_load() であることが予想されます。
疑わしい、または他の AWK 実装に移植できない構造について警告を提供します。 値の可能な値のリストについては、https://www.gnu.org/software/gawk/manual/html_node/Options.html#Optionsを参照してください。
- -bignum 数値に対して任意精度の演算を強制します。 gawk が GNU MPFR および GMP ライブラリを使用するようにコンパイルされていない場合、このオプションは効果がありません。 (そのような場合、gawk は警告を発行します。)
注: この機能は仮釈放中です。主要なgawk メンテナはもうサポートしていませんが、開発チームのメンバーはサポートしています。この状況が変化した場合、 この機能はgawk から削除されます。
環境で GAWK_NO_MPFR_WARN を設定すると、警告が表示されなくなります。
- -非 10 進データ 入力データ内の 8 進数値と 16 進数値を認識します。 このオプションは細心の注意を払って使用してください。
- -use-lc-numeric 入力データを解析するときに、gawk がロケールの小数点文字を使用するように強制します。
- -nostalgia 長年のawkユーザーにノスタルジーの瞬間を提供します。
プログラムのきれいに印刷されたバージョンをファイルに出力します。デフォルトのファイルは、現在のディレクトリのawkprof.outです。このオプションは、- -no-optimize を意味します。
- -optimize プログラムの内部表現に対する gawk のデフォルトの最適化を有効にします。このオプションはデフォルトでオンになっています。
プロファイリング セッションを開始し、 プロファイリング データをプロファイルに送信します。デフォルトは、現在のディレクトリの awkprof.out です。プロファイルの左マージンには、プログラム内の各ステートメントの実行回数と、各ユーザー定義関数の関数呼び出し回数が含まれます。このモードではGawk の実行が遅くなります。このオプションは、- -no-optimize を意味します。
- -posix これにより互換性モードが有効になり、多くの一般的な拡張機能が無効になります。
- -re-interval 正規表現マッチングでの間隔表現の使用を有効にします。間隔式はデフォルトで有効になっていますが、このオプションは下位互換性のために残されています。
- -no-optimize プログラムの内部表現に対する gawk のデフォルトの最適化を無効にします。
- -sandbox サンドボックス モードで gawk を実行し、system() 関数を無効にし、getline で入力リダイレクトし、出力します。 print と printf によるリダイレクト、および動的拡張機能の読み込み。コマンドの実行 (パイプライン経由) も無効になります。
- -lint-old 元のバージョンの UNIX awk に移植できない構造に関する警告を提供します。
- -version このgawk の特定のコピーのバージョン情報を標準出力に出力します。これはバグを報告するときに役立ちます。 GNU コーディング標準に従って、これらのオプションを使用すると、即座に正常に終了します。
オプションの終了を知らせます。これは、AWK プログラム自体への追加の引数を「-」で始めることができるようにするのに役立ちます。
互換モードでは、他のオプションは無効としてフラグが立てられますが、それ以外の場合は無視されます。通常の操作では、プログラム テキストが指定されている限り、不明なオプションは処理のためにARGV 配列内の AWK プログラムに渡されます。
POSIX との互換性を確保するには、-W オプションの後に長いオプション名を付けて使用できます。
AWK プログラムは、一連のオプションのディレクティブ、パターンアクションステートメント、およびオプションの関数定義で構成されます。
@include "filename "
@load "filename "
@namespace "name "
pattern { action statements }
function name(parameter list) { statements }Gawk はまず、指定されている場合は プログラム ファイル、- -source への引数、または最初の非ソース ソースからプログラム ソースを読み取ります。コマンドラインの -option 引数。 -f および - -source オプションはコマンドラインで複数回使用できます。 Gawk は、すべてのプログラム ファイルとコマンド ライン ソース テキストが連結されているかのようにプログラム テキストを読み取ります。
さらに、@include で始まる行を使用して、他のソース ファイルをプログラムにインクルードすることもできます。これは、- -include オプションを使用するのと同じです。
@load で始まる行は、拡張関数をプログラムにロードするために使用できます。これは、- -load オプションを使用するのと同じです。
環境変数 AWKPATH は、-f および - -include オプションで名前が付けられたソース ファイルを検索するときに使用する検索パスを指定します。この変数が存在しない場合、デフォルトのパスは「.:/usr/local/share/awk」になります。 (実際のディレクトリは、gawk がどのように構築およびインストールされたかによって異なる場合があります。) -f オプションに指定されたファイル名に「/」文字が含まれている場合、パスはありません。検索が実行されます。
環境変数 AWKLIBPATH は、- -load オプションで指定されたソース ファイルを検索するときに使用する検索パスを指定します。この変数が存在しない場合、デフォルトのパスは「/usr/local/lib/gawk」になります。 (実際のディレクトリは、gawk がどのように構築およびインストールされたかによって異なる場合があります。)
Gawk は、AWK プログラムを次の順序で実行します。まず、-v オプションで指定されたすべての変数の割り当てが実行されます。次に、gawk はプログラムを内部形式にコンパイルします。次に、gawk は BEGIN ルール (存在する場合) 内のコードを実行し、ARGV で指定された各ファイルの読み取りを開始します。配列 (ARGV[ARGC-1] まで)。コマンドラインにファイル名が指定されていない場合、gawk は標準入力を読み取ります。
コマンドラインのファイル名が var=val の形式である場合、変数の割り当てとして扱われます。変数 var には値 val が割り当てられます。 (これは、BEGIN ルールが実行された後に発生します。)
ARGV の特定の要素の値が空 ("") の場合、gawk はそれをスキップします。
各入力ファイルについて、BEGINFILE ルールが存在する場合、gawk はファイルの内容を処理する前に関連するコードを実行します。同様に、gawk はファイルの処理後に ENDFILE ルールに関連付けられたコードを実行します。
入力内の各レコードに対して、gawk は AWK プログラム内のいずれかのパターンと一致するかどうかをテストします。レコードが一致するパターンごとに、gawk は関連付けられたアクションを実行します。パターンは、プログラム内で発生する順序でテストされます。
最後に、すべての入力が使い果たされた後、gawk は END ルール (存在する場合) 内のコードを実行します。
POSIX によれば、awk コマンド ラインで指定されたファイルはテキスト ファイルである必要があります。そうでない場合、動作は「未定義」になります。 awk のほとんどのバージョンは、コマンド ラインのディレクトリを致命的なエラーとして扱います。
gawk の場合、コマンド ライン上のディレクトリにより警告が生成されますが、それ以外の場合はスキップされます。 - -posix または - -traditional オプションのいずれかが指定された場合、gawk はコマンド ライン上のディレクトリを致命的なエラーとして扱うように戻ります。 。
AWK 変数は動的です。それらは最初に使用されたときに存在します。それらの値は、使用方法に応じて、浮動小数点数または文字列、あるいはその両方になります。さらに、gawk を使用すると、変数に正規表現タイプを指定できます。 AWK には 1 次元配列もあります。複数の次元を持つ配列をシミュレートできます。ただし、gawk は配列の真の配列を提供します。プログラムの実行時にいくつかの事前定義変数が設定されます。これらについては必要に応じて説明し、以下にまとめます。
通常、レコードは改行文字で区切られます。組み込み変数 RS に値を代入することで、レコードの分割方法を制御できます。詳細については、https://www.gnu.org/software/gawk/manual/html_node/Records.html を参照してください。
各入力レコードが読み取られると、gawk はFS 変数の値をフィールド区切り文字として使用して、 レコードをフィールドに分割します。さらに、FIELDWIDTHS と FPAT を使用して入力フィールドの分割を制御することもできます。詳細については、https://www.gnu.org/software/gawk/manual/html_node/Fields.html からご覧ください。
入力レコードの各フィールドは、$1、$2 などの位置によって参照できます。 $0 は、先頭と末尾の空白を含むレコード全体です。
変数 NF は、入力レコード内のフィールドの合計数に設定されます。
存在しないフィールド (つまり、$NF 以降のフィールド) を参照すると、NULL 文字列が生成されます。ただし、存在しないフィールド (例: $ (NF+2)=5) に代入すると、NF の値が増加し、間にあるフィールドが null で作成されます。 string を値として使用し、フィールドが OFS の値で区切られて、$0 の値が再計算されます。負の番号のフィールドを参照すると、致命的なエラーが発生します。 NF をデクリメントすると、新しい値を超えるフィールドの値が失われ、フィールドが の値で区切られて $0 の値が再計算されます。オブスです。
既存のフィールドに値を割り当てると、$0 が参照されたときにレコード全体が再構築されます。同様に、$0 に値を割り当てるとレコードが再分割され、フィールドに新しい値が作成されます。
Gawk の組み込み変数を以下に示します。このリストは意図的に簡潔にしています。詳細については、https://www.gnu.org/software/gawk/manual/html_node/Built_002din-Variablesを参照してください。
コマンドライン引数の数。
処理されている現在のファイルのARGV 内のインデックス。
コマンドライン引数の配列。配列には 0 から ARGC - 1 までのインデックスが付けられます。
非 POSIX システムでは、すべてのファイル I/O に「バイナリ」モードの使用を指定します。詳細については、https://www.gnu.org/software/gawk/manual/html_node/PC-Using.html を参照してください。
数値の変換形式はデフォルトでは "%.6g" です。
現在の環境の値を含む配列。配列には環境変数によってインデックスが付けられ、各要素はその変数の値になります。
getline のリダイレクト中、getline の読み取り中、または close() 中にシステム エラーが発生した場合、 ERRNO は、エラーを説明する文字列に設定されます。値は英語以外のロケールでは翻訳される可能性があります。
空白で区切られたフィールド幅のリスト。設定すると、gawk はフィールド区切り文字として FS 変数の値を使用するのではなく、入力を固定幅のフィールドに解析します。オプションで、各フィールド幅の前に、フィールドが開始する前にスキップする文字数を指定するコロンで区切られた値を指定できます。
現在の入力ファイルの名前。コマンドラインでファイルが指定されていない場合、ファイル名の値は「-」になります。ただし、FILENAME は BEGIN ルール内では未定義です (getline で設定されていない限り)。
現在の入力ファイル内の入力レコード番号。
レコード内のフィールドの内容を説明する正規表現。設定すると、gawk はフィールド区切り文字として FS の値を使用する代わりに、正規表現と一致するフィールドへの入力を解析します。
入力フィールドの区切り文字。デフォルトではスペースです。詳細については、https://www.gnu.org/software/gawk/manual/html_node/Field-Separators.html を参照してください。
インデックスと対応する値がプログラム内のすべてのユーザー定義関数または拡張関数の名前である配列。 注意: FUNCTAB 配列では delete ステートメントを使用できません。
すべての正規表現および文字列操作の大文字と小文字の区別を制御します。詳細については、https://www.gnu.org/software/gawk/manual/html_node/Case_002dsensitivity.html を参照してください。
AWK プログラム内から - -lint オプションの動的制御を提供します。
現在の入力レコード内のフィールドの数。
これまでに確認された入力レコードの総数。
デフォルトでは、数値の出力形式は "%.6g" です。
出力フィールドの区切り文字。デフォルトではスペースです。
出力レコード区切り文字。デフォルトでは改行です。
任意精度浮動小数点数の動作精度、デフォルトでは 53。
この配列の要素は、実行中の AWK プログラムに関する情報へのアクセスを提供します。詳細についてはhttps://www.gnu.org/software/gawk/manual/html_node/Auto_002dsetを参照してください。
数値の任意精度演算に使用する丸めモード。デフォルトでは「N」 (IEEE-754 RoundTiesToEven モード)。詳細については、https://www.gnu.org/software/gawk/manual/html_node/Setting-the-rounding-mode を参照してください。
入力レコードの区切り文字。デフォルトでは改行です。
レコードターミネータ。 Gawk は、RT を、RS で指定された文字または正規表現に一致する入力テキストに設定します。
match() によって一致した最初の文字のインデックス。一致しない場合は 0。
match() によって一致した文字列の長さ。一致しない場合は -1。
配列要素内の複数の添え字を区切るために使用される文字列。デフォルトでは "\034" です。
プログラム内で現在定義されているすべてのグローバル変数および配列の名前をインデックスとする配列。 SYMTAB 配列で delete ステートメントを使用したり、変数名ではないインデックスを持つ要素に代入したりすることはできません。
AWK プログラムのテキスト ドメイン。プログラムの文字列のローカライズされた翻訳を見つけるために使用されます。
配列には、角かっこ ([ と ]) の間に式が添え字として付けられます。式が式リスト (expr, expr . . .) の場合、配列添字は各式の (文字列) 値の連結で構成される文字列になります。 SUBSEP 変数の値で区切られます。この機能は、多次元配列をシミュレートするために使用されます。例えば:
i = "A"; j = "B"; k = "C"
x[i, j, k] = "hello, world\n"
文字列 "hello, world\n" を、文字列 "A\034B\034C" によってインデックス付けされた配列 x の要素に割り当てます。 >。 AWK のすべての配列は連想的です。つまり、文字列値によってインデックスが付けられます。
特殊演算子 in は、配列に特定の値で構成されるインデックスがあるかどうかをテストするために使用できます。
if (val in array) print array[val]
配列に複数の添字がある場合は、 配列で(i, j) を使用します。
in コンストラクトをfor ループで使用して、配列のすべての要素を反復処理することもできます。ただし、(i, j) in array 構造はテストでのみ機能し、for ループでは機能しません。
要素はdelete ステートメントを使用して配列から削除できます。 delete ステートメントは、添え字なしで配列名を指定するだけで、配列の内容全体を削除するために使用することもできます。
gawk は真の多次元配列をサポートします。このような配列が C や C++ のように「長方形」である必要はありません。詳細についてはhttps://www.gnu.org/software/gawk/manual/html_node/Arraysを参照してください。
Gawk は、AWK のすべての変数がグローバルであるという事実を回避するのに役立つ、単純な名前空間機能を提供します。
修飾名は、二重コロン (::) で結合された 2 つの単純な識別子で構成されます。左側の識別子は名前空間を表し、右側の識別子はその名前空間内の変数です。すべての単純な (修飾されていない) 名前は、「現在の」名前空間にあるとみなされます。デフォルトの名前空間はawkです。ただし、大文字のみで構成される単純な識別子は、現在の名前空間が異なる場合でも、awk 名前空間に強制的に組み込まれます。
現在の名前空間を変更するには、@namespace "name " ディレクティブを使用します。
標準の事前定義された組み込み関数名は、名前空間名として使用できません。 gawk によって提供される追加関数の名前は、名前空間名として、または他の名前空間の単純な識別子として使用できます。詳細については、https://www.gnu.org/software/gawk/manual/html_node/Namespaces.html#Namespacesを参照してください。
変数とフィールドは、(浮動小数点) 数値、文字列、あるいはその両方です。正規表現を使用することもできます。変数の値がどのように解釈されるかは、そのコンテキストによって異なります。数値式で使用すると、数値として扱われます。文字列として使用すると、文字列として扱われます。
変数を強制的に数値として扱うには、変数にゼロを追加します。文字列として強制的に処理するには、NULL 文字列と連結します。
初期化されていない変数には、数値 0 と文字列値 "" (null または空の文字列) が含まれます。
文字列を数値に変換する必要がある場合、 変換はstrtod(3) を使用して行われます。数値は、変数の数値を引数として、sprintf(3) の形式文字列として CONVFMT の値を使用することによって文字列に変換されます。ただし、AWK 内のすべての数値が浮動小数点であっても、 整数値は常に整数として変換されます。
Gawk は次のように比較を実行します。 2 つの変数が数値の場合、それらは数値的に比較されます。一方の値が数値で、もう一方の値が「数値文字列」である文字列値を持つ場合、比較も数値的に行われます。それ以外の場合、数値は文字列に変換され、文字列比較が実行されます。もちろん、2 つの文字列は文字列として比較されます。
"57" などの文字列定数は数値文字列ではなく、文字列定数であることに注意してください。 「数値文字列」の考え方は、フィールド、getline input、FILENAME、ARGV 要素、ENVIRON 要素にのみ適用されます。およびsplit() または patsplit() によって作成された配列の要素であり、数値文字列です。基本的な考え方は、ユーザー入力であり、数値のように見えるユーザー入力のみがそのように扱われる必要があるということです。
AWK プログラムのソース コードでは、C スタイルの 8 進数および 16 進数の定数を使用できます。たとえば、8 進数値 011 は 10 進数値 9 に等しく、16 進数値 0x11 は 10 進数値 17 に等しくなります。
AWK の文字列定数は、二重引用符で囲まれた一連の文字です (「値」 など)。文字列内では、C のように、 特定のエスケープ シーケンスが認識されます。 詳細については、https://www.gnu.org/software/gawk/manual/html_node/Escape-Sequences を参照してください。詳細。
正規表現定数は、スラッシュで囲まれた一連の文字です (/value/ など)。
マニュアルで説明されているエスケープ シーケンスは、定数の正規表現内で使用することもできます (例: /[ \t\f\n\r\v]/ は空白文字と一致します)。
Gawk は厳密に型指定された正規表現定数を提供します。これらは先頭に @ 記号を付けて記述されます (@/value/ のように)。このような定数は、スカラー (変数、配列要素) に割り当てられ、ユーザー定義関数に渡される場合があります。このように割り当てられた変数には、正規表現タイプがあります。
AWK は行指向の言語です。パターンが最初にあり、その後にアクションが続きます。アクション ステートメントは { と } で囲まれます。パターンが欠落しているか、アクションが欠落している可能性がありますが、もちろん両方が欠落しているわけではありません。パターンが欠落している場合、アクションは入力の単一レコードごとに実行されます。欠落しているアクションは以下と同等です
{ print }レコード全体を出力します。
コメントは # 文字で始まり、行の終わりまで続きます。ステートメントを区切るために空行を使用できます。通常、ステートメントは改行で終わりますが、カンマ、{、?、: で終わる行には当てはまりません。 && または ||。 do または else で終わる行のステートメントも自動的に次の行に続きます。他の場合には、「\」で行を終了することで行を続けることができます。この場合、改行は無視されます。ただし、# の後の「\」は特別なものではありません。
複数のステートメントを「;」で区切ることにより 1 行に置くことができます。 ”。これは、パターンとアクションのペアのアクション部分内のステートメント (通常の場合) と、パターンとアクションのステートメント自体の両方に当てはまります。
AWK パターンは次のいずれかになります。
BEGIN END BEGINFILE ENDFILE /regular expression/ relational expression pattern && pattern pattern || pattern pattern ? pattern : pattern (pattern) ! pattern pattern1, pattern2
BEGIN と END は、入力に対してテストされない 2 つの特別な種類のパターンです。すべての BEGIN パターンのアクション部分は、すべてのステートメントが 1 つの BEGIN ルールで記述されているかのようにマージされます。これらは、入力が読み取られる前に実行されます。同様に、すべての END ルールはマージされ、すべての入力が使い果たされたとき (または exit ステートメントが実行されたとき) に実行されます。 BEGIN パターンと END パターンは、パターン式内の他のパターンと組み合わせることはできません。 BEGIN と END パターンにはアクション パーツが欠落していてはなりません。
BEGINFILE と ENDFILE は追加の特別なパターンで、各コマンド ライン入力ファイルの最初のレコードを読み取る前と、各ファイルの最後のレコードを読み取った後にアクションが実行されます。 BEGINFILE ルール内では、ファイルが正常に開かれた場合、ERRNO の値は空の文字列になります。それ以外の場合は、ファイルに何らかの問題があるため、コードではnextfile を使用してそれをスキップする必要があります。それが行われていない場合、gawk は、開けないファイルに対して通常の致命的なエラーを生成します。
/正規表現/ パターンの場合、正規表現に一致する入力レコードごとに、関連付けられたステートメントが実行されます。正規表現は基本的に egrep(1) の正規表現と同じです。正規表現の詳細については、https://www.gnu.org/software/gawk/manual/html_node/Regexp.html を参照してください。
関係式では、以下のアクションに関するセクションで定義されている演算子のいずれかを使用できます。これらは通常、特定のフィールドが特定の正規表現と一致するかどうかをテストします。
&&、||、および ! 演算子は、C と同様に、それぞれ論理 AND、論理 OR、および論理 NOT です。 - C と同様の回路評価。より原始的なパターン表現を組み合わせるために使用されます。ほとんどの言語と同様、括弧を使用して評価順序を変更できます。
その? : 演算子は C の同じ演算子に似ています。最初のパターンが true の場合、テストに使用されるパターンは 2 番目のパターンであり、それ以外の場合は 3 番目のパターンです。 2 番目と 3 番目のパターンのうちの 1 つだけが評価されます。
式のパターン 1 、パターン 2 形式は範囲パターンと呼ばれます。これは、パターン 1 に一致するレコードから始まり、パターン 2 に一致するレコードまでのすべての入力レコードと一致します。他の種類のパターン式とは組み合わせません。
アクション ステートメントは中かっこ { と } で囲まれます。アクション ステートメントは、ほとんどの言語で見られる通常の代入ステートメント、条件ステートメント、およびループ ステートメントで構成されます。使用可能な演算子、制御ステートメント、入出力ステートメントは、C のものに倣ってパターン化されています。
AWK の演算子を優先順位の高い順に示します。
グループ化
フィールド参照。
前置と後置の両方のインクリメントとデクリメント。
べき乗。
単項プラス、単項マイナス、論理否定。
乗算、除算、および剰余。
加減。
文字列の連結。
getline、print、および printf のパイプされた I/O。
通常の関係演算子。
正規表現一致、否定一致。
配列のメンバーシップ。
論理積。
論理和。
C の条件式。これは expr1 という形式になります。 expr2 : expr3 。 expr1 が true の場合、式の値は expr2 になり、それ以外の場合は expr3 になります。 expr2 と expr3 の 1 つだけが評価されます。
割り当て。絶対代入 (var=value) と演算子代入 (もう一方の) の両方フォーム)がサポートされています。
制御ステートメントは次のとおりです。
if (condition) statement [ else statement ] while (condition) statement do statement while (condition) for (expr1; expr2; expr3) statement for (var in array) statement break continue delete array [ index ] delete array exit [ expression ] { statements } switch (expression) { case value|regex : statement . . . [ default: statement ] }
入出力ステートメントは次のとおりです。
開いているファイル、パイプ、またはコプロセスを閉じます。オプションの方法は、コプロセスへの双方向パイプの一端を閉じる場合にのみ使用してください。これは、「to」 または 「from」 のいずれかの文字列値である必要があります。
次の入力レコードから $0 を設定します。 NF、NR、FNR、RTを設定します。
ファイルの次のレコードから $0 を設定します。 NF、RTを設定します。
次の入力レコードから var を設定します。 NR、FNR、RTを設定します。
file の次のレコードから var を設定します。 RT を設定します。
コマンドを実行し、上記のように出力を $0 または var にパイプし、RT します。
上記のように、出力を$0 または var にパイプするコプロセスとしてコマンドを実行し、RTします。 (コマンドはソケットにすることもできます。以下のサブセクション特殊ファイル名を参照してください。)
開いている出力ファイルまたはパイプファイルに関連付けられているバッファをフラッシュします。 file が見つからない場合、またはそれが NULL 文字列の場合は、開いているすべての出力ファイルとパイプをフラッシュします。
現在の入力レコードの処理を停止します。次の入力レコードを読み取り、AWK プログラムの最初のパターンから処理をやり直します。入力データの最後に到達したら、END ルールを実行します。
現在の入力ファイルの処理を停止します。次の入力レコードは、次の入力ファイルから読み取られます。 FILENAME と ARGIND を更新し、FNR を 1 にリセットして、AWK プログラムの最初のパターンから処理をやり直します。入力データの最後に到達したら、ENDFILE ルールと END ルールを実行します。
現在のレコードを印刷します。出力レコードはORSの値で終了します。
式を印刷します。各式はOFSの値で区切られます。出力レコードはORSの値で終了します。
ファイルに式を出力します。各式はOFSの値で区切られます。出力レコードはORSの値で終了します。
フォーマットして印刷します。
ファイルにフォーマットして印刷します。
コマンド cmd-line を実行し、終了ステータスを返します。 (これは、POSIX 以外のシステムでは利用できない場合があります。) 詳細については、https://www.gnu.org/software/gawk/manual/html_node/I_002fO-Functions.html#I_002fO-Functions を参照してください。終了ステータスの詳細。
print と printf では、追加の出力リダイレクトが許可されます。
出力をファイルに追加します。
パイプに書きます。
データをコプロセスまたはソケットに送信します。 (以下のサブセクション「特殊ファイル名」も参照してください。)
getline コマンドは、成功した場合は 1、ファイルの終わりの場合は 0、エラーの場合は -1 を返します。 errno(3) 値が I/O 操作を再試行できることを示している場合、PROCINFO["input ", " RETRY"] が設定されると、-1 ではなく -2 が返され、さらにgetline の呼び出しが試行される可能性があります。エラーが発生すると、ERRNO に問題を説明する文字列が設定されます。
注意: 双方向ソケットのオープンに失敗すると、呼び出し元の関数に致命的ではないエラーが返されます。パイプ、コプロセス、またはソケットを使用してgetlineを実行する場合、またはループ内でprintまたはprintfから実行する場合は、次のことを行う必要があります。 > close() を使用して、コマンドまたはソケットの新しいインスタンスを作成します。 AWK は、パイプ、ソケット、またはコプロセスが EOF を返したときに自動的に閉じません。
AWK バージョンの printf ステートメントと sprintf() 関数は C のものと似ています。 詳細については、https://www.gnu.org/ を参照してください。ソフトウェア/gawk/manual/html_node/Printf.html。
print または printf からファイルへの I/O リダイレクトを行う場合、またはファイルからのgetline 経由で I/O リダイレクトを行う場合、gawk 特定の特殊なファイル名を内部で認識します。これらのファイル名を使用すると、gawk の親プロセス (通常はシェル) から継承されたオープン ファイル記述子にアクセスできます。これらのファイル名は、データ ファイルに名前を付けるためにコマンド ラインで使用することもできます。ファイル名は次のとおりです。
標準入力。
標準入力。
標準出力。
標準エラー出力。
開いているファイル記述子nに関連付けられているファイル。
次の特別なファイル名は、TCP/IP ネットワーク接続を作成するために |& コプロセス演算子とともに使用できます。
/inet/tcp/lport/rhost/rport /inet4/tcp/lport/rhost/rport /inet6/tcp/lport/rhost/rport
ローカル ポート lport 上の TCP/IP 接続からリモート ポート rport 上のリモート ホスト rhost へのファイル。システムにポートを選択させるには、ポート 0 を使用します。 IPv4 接続を強制するには /inet4 を使用し、IPv6 接続を強制するには /inet6 を使用します。プレーン /inet はシステムのデフォルト (おそらく IPv4) を使用します。 |& 双方向 I/O 演算子でのみ使用できます。
/inet/udp/lport/rhost/rport /inet4/udp/lport/rhost/rport /inet6/udp/lport/rhost/rport
同様ですが、TCP/IP の代わりに UDP/IP を使用します。
AWK には次の組み込み算術関数があります。
y/x の逆正接をラジアンで返します。
expr のコサインをラジアン単位で返します。
指数関数。
整数に切り捨てます。
num と denom を整数に切り捨てます。 num を denom で割った商を result["quotient"] に返し、剰余を に返します。結果["残り"]。これはgawk 拡張機能であり、主に任意の大きな整数を扱う場合に役立ちます。
自然対数関数。
0 ≤ N < 1 となる、0 から 1 までの乱数 N を返します。
expr のサインをラジアン単位で返します。
expr の平方根を返します。
乱数ジェネレーターの新しいシードとして expr を使用します。 expr が指定されていない場合は、時刻を使用します。乱数ジェネレーターの前のシードを返します。
Gawk には次の組み込み文字列関数があります。詳細はhttps://www.gnu.org/software/gawk/manual/html_node/String-Functionsで提供されます。
ソース配列 s 内の要素の数を返します。 gawk の値を比較するための通常のルールを使用して s の内容を並べ替え、並べ替えられた値 s のインデックスを次で始まる連続した整数に置き換えます。 1. オプションの宛先配列 d が指定されている場合は、まず s を d に複製してから、 d をソートします。ソース配列sのインデックスは変更されません。オプションの文字列 how は、方向と比較モードを制御します。 方法の有効な値はhttps://www.gnu.org/software/gawk/manual/html_node/String-Functions.html#String-Functionsで説明されています。 s と d は同じ配列にすることができます。これは、3 番目の引数を指定する場合にのみ意味を持ちます。
ソース配列 s 内の要素の数を返します。動作は asort() の動作と同じですが、並べ替えには配列の値ではなく配列のインデックスが使用される点が異なります。完了すると、配列には数値的にインデックスが付けられ、値は元のインデックスの値になります。元の値は失われます。したがって、元の配列を保持したい場合は、2 番目の配列を提供します。オプションの文字列 how の目的は、asort() の場合と同じです。ここでも、s と d は同じ配列にすることができます。これは、3 番目の引数を指定する場合にのみ意味を持ちます。
ターゲット文字列 t で正規表現 r に一致するものを検索します。 h が g または G で始まる文字列の場合、 r に一致するすべてを s に置き換えます。 。それ以外の場合、h は、r のどの一致を置換するかを示す数値です。 t が指定されていない場合は、代わりに $0 を使用します。置換テキスト s 内では、シーケンス \n () を使用できます。n は 1 ~ 9 の数字です。 n 番目の括弧で囲まれた部分式に一致したテキストのみを示すために使用されます。シーケンス \0 は、文字 & と同様に、一致したテキスト全体を表します。 sub() や gsub() とは異なり、変更された文字列が関数の結果として返され、 元のターゲット文字列は変更されません。 。
文字列 t 内の正規表現 r に一致する部分文字列ごとに、文字列 s を置換し、置換の数を返します。 t が指定されていない場合は、$0 を使用します。置換テキスト内の & は、実際に一致したテキストに置き換えられます。リテラルの & を取得するには、\& を使用します。 (これは「\\&」と入力する必要があります。https://www.gnu.org/software/gawk/manual/html_node/Gory-Details.html#Gory-Details を参照してください。 では、sub()、gsub()、gensub()< の置換テキスト内のアンパサンドとバックスラッシュのルールについて詳しく説明します。。)
文字列 s 内の文字列 t のインデックスを返します。t が存在しない場合は 0 を返します。 (これは、文字インデックスが 1 から始まることを意味します。)
文字列 s の長さを返します。s が指定されていない場合は $0 の長さを返します。配列引数を使用すると、length() は配列内の要素の数を返します。
正規表現 r が出現する s 内の位置を返し、r が存在しない場合はゼロを返し、RSTART の値を設定します。 と 長さ です。引数の順序は ~ 演算子の場合と同じであることに注意してください: str ~ re。
配列aがどのように構成されるかについては、https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html#String-Functionsを参照してください。提供されている場合は満たされます。
文字列 s を配列 a と正規表現 r の区切り文字配列 seps に分割し、フィールドの数。要素の値は、r と一致した s の部分です。 seps[i] の値は、a[i の後に表示される null 区切り文字である可能性があります。 ]. seps[0] の値は、null の可能性がある先頭区切り文字です。 r が省略された場合は、代わりに FPAT が使用されます。配列 a と seps が最初にクリアされます。分割はFPATによるフィールド分割と同じように動作します。
文字列 s を配列 a と正規表現 r の区切り文字配列 seps に分割し、フィールドの数。 r が省略された場合は、代わりに FS が使用されます。配列 a と seps が最初にクリアされます。 seps[i] は、a[< 間の r と一致するフィールド区切り文字です。i] および a[i+1]。 分割はフィールド分割と同じように動作します。 。
fmt に従って expr-list を出力し、結果の文字列を返します。
str を調べて、その数値を返します。 str が先頭の 0 で始まる場合は、8 進数として扱います。 str が先頭の 0x または 0X で始まる場合は、16 進数として扱います。それ以外の場合は、10 進数であると想定されます。
gsub() と同様ですが、最初に一致した部分文字列のみを置換します。 0 または 1 を返します。
i で始まる s の最大 n 文字の部分文字列を返します。 n が省略された場合は、残りの s を使用します。
文字列 str のコピーを返します。str 内のすべての大文字が対応する小文字に変換されます。アルファベット以外の文字は変更されません。
文字列 str のコピーを返します。str 内のすべての小文字が対応する大文字に変換されます。アルファベット以外の文字は変更されません。
Gawk はマルチバイトを認識します。つまり、index()、length()、substr()、match() はすべて次のように機能します。バイトではなく文字数です。
Gawk は、タイムスタンプを取得してフォーマットするための次の関数を提供します。詳細はhttps://www.gnu.org/software/gawk/manual/html_node/Time-Functionsで説明されています。
datespec を systime() によって返されるのと同じ形式のタイムスタンプに変換し、結果を返します。 utc-flag が存在し、0 または null 以外の場合、時刻は UTC タイム ゾーンであるとみなされます。それ以外の場合、時刻はローカル タイム ゾーンであるとみなされます。 datespec に十分な要素が含まれていない場合、または結果の時間が範囲外の場合、mktime() は -1 を返します。 datespec の詳細については、https://www.gnu.org/software/gawk/manual/html_node/Time-Functions.html#Time-Functions を参照してください。
フォーマットの仕様に従ってタイムスタンプをフォーマットします。 utc-flag が存在し、0 または null 以外の場合、結果は UTC で表示され、それ以外の場合、結果は現地時間で表示されます。 タイムスタンプは、systime() によって返されるものと同じ形式である必要があります。 タイムスタンプが欠落している場合は、現在の時刻が使用されます。 format が欠落している場合は、date(1) の出力と同等のデフォルトの形式が使用されます。デフォルトの形式はPROCINFO["strftime"]で利用できます。使用できることが保証されている形式変換については、ISO C の strftime() 関数の仕様を参照してください。
現在の時刻をエポック (POSIX システムでは 1970-01-01 00:00:00 UTC) からの秒数として返します。
Gawk は、次のビット操作関数を提供します。これらは、倍精度浮動小数点値をuintmax_t 整数に変換し、演算を実行してから、結果を浮動小数点に変換して戻すことで機能します。これらの関数のいずれかに負のオペランドを渡すと、致命的なエラーが発生します。
機能は次のとおりです。
引数リストで指定された値のビット単位の AND を返します。少なくとも 2 つある必要があります。
val のビット単位の補数を返します。
count ビットだけ左にシフトした val の値を返します。
引数リストで指定された値のビット単位の OR を返します。少なくとも 2 つある必要があります。
count ビットだけ右にシフトした val の値を返します。
引数リストで指定された値のビット単位の XOR を返します。少なくとも 2 つある必要があります。
次の関数は、引数に関する型関連の情報を提供します。
x が配列の場合は true を返し、それ以外の場合は false を返します。
x のタイプを示す文字列を返します。文字列は、"配列"、"数値"、"正規表現"、"文字列"のいずれかになります。 「strnum」、「未割り当て」、または「未定義」。
次の関数は、実行時に文字列を変換するために AWK プログラム内から使用できます。詳細については、https://www.gnu.org/software/gawk/manual/html_node/I18N-Functions.html#I18N-Functionsを参照してください。
ファイルが「標準」の場所に配置されない、または配置できない場合に備えて、gawk が .gmo ファイルを探すディレクトリを指定します。 ドメインが「バインド」されているディレクトリを返します。
デフォルトのドメインはTEXTDOMAINの値です。 ディレクトリがヌル文字列 ("") の場合、bindtextdomain() は指定されたドメインの現在のバインディングを返します。 >。
ロケール カテゴリ category のテキスト ドメイン domain 内の string の翻訳を返します。 ドメインのデフォルト値は、TEXTDOMAINの現在の値です。 カテゴリのデフォルト値は「LC_MESSAGES」です。
ロケール カテゴリ < のテキスト ドメイン domain 内の string1 と string2 の翻訳の number に使用される複数形を返します。カテゴリ。 ドメインのデフォルト値は、TEXTDOMAINの現在の値です。 カテゴリのデフォルト値は「LC_MESSAGES」です。
特別なブール型の値を作成できます。それらがどのように機能するか、およびそれらが存在する理由についてはマニュアルを参照してください。
式のブール値に基づいて、true 値または false 値を返します。真の値は数値 1 を持ちます。 False 値の数値はゼロです。
AWK の関数は次のように定義されます。
関数名(パラメータ リスト) { ステートメント }
関数は、パターンまたはアクションの式内から呼び出されたときに実行されます。関数呼び出しで指定された実際のパラメータは、関数で宣言された仮パラメータをインスタンス化するために使用されます。配列は参照によって渡され、他の変数は値によって渡されます。
ローカル変数は、パラメータ リスト内の追加パラメータとして宣言されます。規則では、パラメーター リスト内でローカル変数と実際のパラメーターを余分なスペースで区切ります。例えば:
function f(p, q, a, b) # a and b are local { . . . } /abc/ { . . . ; f(1, 2) ; . . . }
関数呼び出しの左括弧は、間に空白を入れずに関数名の直後に置く必要があります。この制限は、上記の組み込み関数には適用されません。
関数は相互に呼び出したり、再帰的になったりする場合があります。ローカル変数として使用される関数パラメーターは、関数呼び出し時に NULL 文字列と数値 0 に初期化されます。
関数から値を返すには、return expr を使用します。値が指定されない場合、または関数が終了から「落ちる」ことによって戻る場合、戻り値は未定義です。
関数は間接的に呼び出すことができます。これを行うには、呼び出される関数の名前を文字列として変数に割り当てます。次に、変数を関数名のように使用し、次のように先頭に @ 記号を付けます。
function myfunc() { print "myfunc called" . . . } { . . . the_func = "myfunc" @the_func() # call through the_func to myfunc . . . }
- -lint が指定されている場合、gawk は実行時ではなく解析時に未定義関数の呼び出しについて警告します。実行時に未定義の関数を呼び出すと致命的なエラーになります。
@load ステートメントを使用すると、C または C++ で記述された新しい関数を実行中の gawk インタープリターに動的に追加できます。詳細については、このマニュアル ページの範囲を超えています。 https://www.gnu.org/software/gawk/manual/html_node/Dynamic-Extensions.html#Dynamic-Extensionsを参照してください。
gawk プロファイラは 2 つの信号を受け入れます。 SIGUSR1 により、プロファイルと関数呼び出しスタックがプロファイル ファイル (awkprof.out または - -profile で名前が付けられたファイル) にダンプされます。オプションです。その後も引き続き実行されます。 SIGHUP により、gawk はプロファイルと関数呼び出しスタックをダンプして終了します。
文字列定数は、二重引用符で囲まれた一連の文字です。英語以外を話す環境では、AWK プログラムの文字列をローカルの自然言語への翻訳が必要であるとマークすることができます。このような文字列は、AWK プログラム内で先頭にアンダースコア (「_ 」) を付けてマークされます。例えば、
gawk 'BEGIN { print "hello, world" }'常にhello, world を出力します。しかし、
gawk 'BEGIN { print _"hello, world" }'フランスではボンジュール、 モンドを印刷するかもしれません。ローカライズ可能な AWK プログラムの作成と実行に関連する手順については、https://www.gnu.org/software/gawk/manual/html_node/Internationalization.html#Internationalization を参照してください。
Gawk には、POSIX awk に対する拡張機能が多すぎます。これらについてはhttps://www.gnu.org/software/gawk/manual/html_node/POSIX_002fGNU.htmlで説明されています。すべての拡張機能は、- -traditional または - -posix オプションを指定して gawk を呼び出すことで無効にできます。
AWKPATH 環境変数を使用すると、-f、 で指定されたファイルを検索するときに gawk が検索するディレクトリのリストを提供できます。 - -file、-i、- -include オプション、および @include ディレクティブ。最初の検索が失敗した場合は、ファイル名に .awk を追加した後、パスが再度検索されます。
AWKLIBPATH 環境変数を使用すると、-l および で指定されたファイルを検索するときに gawk が検索するディレクトリのリストを提供できます。 - - ロードオプション。
GAWK_PERSIST_FILE 環境変数が存在する場合、永続メモリのバッキング ストアとして使用するファイルを指定します。 これは実験的な機能です。詳細については、「GAWK: 効果的な AWK プログラミング」を参照してください。
GAWK_READ_TIMEOUT 環境変数を使用すると、端末、パイプ、またはソケットを含む双方向通信からの入力の読み取りのタイムアウトをミリ秒単位で指定できます。
ソケット経由でリモート ホストに接続する場合、GAWK_SOCK_RETRIES は再試行の回数を制御し、GAWK_MSEC_SLEEP は再試行の間隔を制御します。間隔はミリ秒単位です。 usleep(3) をサポートしていないシステムでは、値は整数の秒数に切り上げられます。
環境内に POSIXLY_CORRECT が存在する場合、gawk はコマンドラインで - -posix が指定されているかのように動作します。 - -lint が指定されている場合、gawk はこの旨の警告メッセージを発行します。
環境で GAWK_NO_MPFR_WARN を設定すると、非推奨の MPFR モードに関する警告が表示されなくなります。
exit ステートメントを値とともに使用すると、gawk は指定された数値で終了します。
それ以外の場合、実行中に問題がなかった場合、gawk は C 定数 EXIT_SUCCESS の値で終了します。通常、これはゼロです。
エラーが発生した場合、gawk は C 定数 EXIT_FAILURE の値で終了します。通常、これは 1 つです。
致命的なエラーにより gawk が終了した場合、終了ステータスは 2 です。非 POSIX システムでは、この値は EXIT_FAILURE にマップされる場合があります。
このマニュアル ページでは、gawk バージョン 5.2 について説明します。
UNIXawk のオリジナル バージョンは、Bell Laboratories の Alfred Aho、Peter Weinberger、Brian Kernighan によって設計および実装されました。ブライアン・カーニハンはそれを維持し、強化し続けています。
Free Software Foundation の Paul Rubin と Jay Fenlason は、Seventh Edition UNIX で配布されているオリジナルのバージョンの awk と互換性を持たせるためにgawk を作成しました。 John Woods は多くのバグ修正に貢献しました。 David Trueman は、Arnold Robbins の協力を得て、gawk を UNIX の新しいバージョンのawk と互換性のあるものにしました。 Arnold Robbins が現在のメンテナです。
gawk とそのドキュメントの貢献者の完全なリストについては、「GAWK: 効果的な AWK プログラミング」を参照してください。
メンテナと現在サポートされているポートに関する最新情報については、gawk ディストリビューションの README ファイルを参照してください。
gawk でバグを見つけた場合は、gawkbug(1) プログラムを使用して報告してください。
バグを報告するための完全な手順は、https://www.gnu.org/software/gawk/manual/html_node/Bugs.html に記載されています。そこに記載されている指示をよく読みに従ってください。これにより、関係者全員にとってバグの報告と解決がはるかに簡単になります。本当。
コマンド ライン変数割り当て機能を考慮すると、-F オプションは必要ありません。これは下位互換性のためだけに残されています。
このマニュアル ページは長すぎます。 gawk には機能が多すぎます。
egrep(1), sed(1), gawkbug(1), printf(3), and strftime(3).
The AWK Programming Language, Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger, Addison-Wesley, 1988. ISBN 0-201-07981-X.
GAWK: Effective AWK Programming, Edition 5.2, shipped with the gawk source. The current version of this document is available online at https://www.gnu.org/software/gawk/manual.
The GNU gettext documentation, available online at https://www.gnu.org/software/gettext.
Print and sort the login names of all users:
BEGIN { FS = ":" }
{ print $1 | "sort" }
Count lines in a file:
{ nlines++ }
END { print nlines }
Precede each line by its number in the file:
{ print FNR, $0 }
Concatenate and line number (a variation on a theme):
{ print NR, $0 }
Run an external command for particular lines of data:
tail -f access_log |
awk '/myhome.html/ { system("nmap " $1 ">> logdir/myhome.html") }'Brian Kernighan は、テストとデバッグ中に貴重な支援を提供してくれました。私たちは彼に感謝しています。
著作権 © 1989、1991、1992、1993、1994、1995、1996、1997、1998、1999、2001、2002、2003、2004、2005、2007、2009、2010、2011、2012、 2013年、2014年、2015年、2016年、 2017、2018、2019、2020、2021、2022 フリーソフトウェア財団株式会社
著作権表示とこの許可通知がすべてのコピーに保存されている場合、このマニュアル ページのそのままのコピーを作成および配布することが許可されます。
この段落 (この段落は印刷されたマニュアル ページには関係ありません) の削除を除き、印刷された文書にこれと同じコピー許可通知が含まれている場合に限り、troff を通じてこのファイルを処理し、結果を印刷する許可が与えられます。
結果として得られる派生著作物全体が、これと同一の許可通知の条件に基づいて配布されることを条件として、逐語コピーの条件の下で、このマニュアル ページの修正版をコピーおよび配布する許可が与えられます。
このマニュアル ページの別の言語への翻訳をコピーおよび配布することは、上記の修正バージョンの条件に基づいて許可されます。ただし、財団によって承認された翻訳にはこの許可通知が記載される場合があります。