Copyright © 2004 この記事は GPL 契約に準拠しており、転載、変更、配布は歓迎されています。
初発売日: 2004 年 8 月 6 日
---------------------- ---- ------------------------------------------------ ---- ---
目次
1. awk の概要
2. awk コマンドの形式とオプション
2.1. awk 構文には 2 つの形式があります
2.2.コマンドオプション
3. モードと操作
3.2. 操作
5. awk 演算子
6.レコード
6.2. ドメイン
7. gawk 固有の正規表現メタ文字
9. 比較演算子 (~)
11. 範囲テンプレート
12. passwd ファイルの有効性を検証する例
14. awk プログラミング
14.2. 🎜>14.3. END モジュール
14.5. 条件付きステートメント
14.7. awk の内部構造
15.
1. awk の概要
awk は、linux/unix でテキストとデータを処理するために使用されるプログラミング言語です。データは、標準入力、1 つ以上のファイル、または他のコマンドの出力から取得できます。ユーザー定義関数や動的正規表現などの高度な機能をサポートしており、Linux/Unix での強力なプログラミング ツールです。コマンドラインから使用されますが、スクリプトとして使用されることが多くなります。 awk がテキストとデータを処理する方法は、最初の行から最後の行までファイルを 1 行ずつスキャンして、特定のパターンに一致する行を探し、これらの行に対して必要な操作を実行することです。処理アクションが指定されていない場合は、一致する行が標準出力 (画面) に表示されます。モードが指定されていない場合は、操作で指定されたすべての行が処理されます。 awk はそれぞれ、作成者の姓の最初の文字を表します。それは、著者がアルフレッド・アホ、ブライアン・カーニハン、ピーター・ワインバーガーの3人だからです。 gawk は awk の GNU バージョンであり、Bell Labs と GNU からのいくつかの拡張機能を提供します。以下に紹介する awk は GUN の gawk を例にしています。Linux システムでは awk は gawk にリンクされているため、以下はすべて awk を使用して導入されます。
2. awk コマンドの形式とオプション
2.1. awk 構文には 2 つの形式があります。
awk [オプション] 'script' var=value ファイル
awk [ options] -f scriptfile var=value file(s)
2.2. コマンドオプション
-F fs または --field-separator fs
入力ファイルの区切り文字を指定します。fs は文字列または-F: などの正規表現。
-v var=value または --assign var=value
ユーザー定義変数を割り当てます。
-f scripfile または --file scriptfile
スクリプト ファイルから awk コマンドを読み取ります。
-mf nnn および -mr nnn
nnn 値に固有の制限を設定します。-mf オプションは nnn に割り当てられる最大ブロック数を制限し、-mr オプションはレコードの最大数を制限します。これら 2 つの関数は、ベル研究所バージョンの awk の拡張機能であり、標準の awk には適用できません。
-W Compact または --compat、-W traditional または --traditional
互換モードで awk を実行します。したがって、gawk は標準の awk とまったく同じように動作し、すべての awk 拡張機能は無視されます。
-W copyleft または --copyleft、-W copyright または --copyright
簡単な著作権情報を出力します。
-W help または --help、-W uses または --usage
すべての awk オプションと各オプションの簡単な説明を出力します。
-W lint または --lint
従来の UNIX プラットフォームに移植できない構造に関する警告を出力します。
-W lint-old または --lint-old
レガシー UNIX プラットフォームに移植できない構造に関する警告を出力します。
-W posix
互換モードをオンにします。ただし、次の制限があり、認識されません: x、関数キーワード、func、エスケープ シーケンス、fs がスペースの場合、改行はフィールド区切り文字として使用されます。演算子 ** および **= は ^ を置き換えることはできません。 ^= ;ffflush は無効です。
-W re-interval または --re-inerval
括弧式 [[:alpha:]] などの間隔正規表現の使用を許可します。(grep の Posix 文字クラス) を参照してください。
-W ソース プログラム テキスト または --ソース プログラム テキスト
プログラム テキストをソース コードとして使用します。これは、-f コマンドと混合できます。
-W version または --version
バグ レポート情報のバージョンを出力します。
3. モードと操作
Awk スクリプトは次のモードと操作で構成されます:
パターン {action} ($awk '/root/' test、または $awk '$3
両方ともオプションです。パターンがない場合、アクションはすべてのレコードに適用されます。デフォルトでは、各入力行はレコードですが、ユーザーは RS 変数を使用して異なる区切り文字を指定できます。
3.1. パターン
パターンは次のいずれかになります:
/正規表現/: ワイルドカードを使用した拡張セット。
関係式: 以下の演算子テーブルの関係演算子を使用して、文字列または数値の比較を行うことができます。たとえば、$2>%1 は 2 番目のフィールドを選択します。最初のフィールドはOKです。
パターン マッチング式: 演算子 ~ (一致) と ~! (不一致) を使用します。
モード、モード: 行の範囲を指定します。この構文には BEGIN パターンと END パターンを含めることはできません。
BEGIN: ユーザーは、最初の入力レコードが処理される前に実行されるアクションを指定できます。通常は、ここでグローバル変数を設定できます。
END: 最後の入力レコードが読み取られた後にユーザーにアクションを実行させます。
3.2. オペレーション
オペレーションは、改行またはセミコロンで区切られ、中かっこで囲まれた 1 つ以上のコマンド、関数、式で構成されます。主要な部分は 4 つあります:
変数または配列の割り当て
出力コマンド
組み込み関数
制御フロー コマンド
4 . awk awk
の環境変数 表 1. awk
の環境変数 変数 説明
$n 現在のレコードの n 番目のフィールド。フィールドは FS で区切られます。
$0 入力レコードを完了します。
ARGC コマンドラインパラメータの数。
ARGIND コマンドライン内の現在のファイルの位置 (0 から数えます)。
ARGV コマンドライン引数を含む配列。
CONVFMT デジタル変換形式 (デフォルト値は %.6g)
ENVIRON 環境変数の連想配列。
ERRNO 最後のシステムエラーの説明。
FIELDWIDTHS フィールド幅リスト (スペースバーで区切られています)。
FILENAME 現在のファイル名。
FNR NR と同じですが、現在のファイルを基準とします。
FS フィールド区切り文字 (デフォルトは任意のスペース)。
IGNORECASE true の場合、大文字と小文字を無視した一致を実行します。
NF 現在のレコード内のフィールドの数。
NR 現在のレコード番号。
OFMT デジタル出力形式 (デフォルト値は %.6g)。
OFS 出力フィールドの区切り文字 (デフォルト値はスペース)。
ORS 出力レコード区切り文字 (デフォルト値は改行文字)。
RLENGTH match 関数によって照合された文字列の長さ。
RS レコード区切り文字 (デフォルトは改行文字)。
RSTART match 関数によって一致した文字列の最初の位置。
SUBSEP 配列添字区切り文字 (デフォルト値は