ホームページ  >  記事  >  バックエンド開発  >  awkの紹介と勉強メモ集 ページ1/3_PHPチュートリアル

awkの紹介と勉強メモ集 ページ1/3_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:51:56975ブラウズ

Copyright © 2004 この記事は GPL 契約に準拠しており、転載、変更、配布は歓迎されています。

初版発行日: 2004年8月6日


-------------------------------------- --------------------------------------

目次

1. awk の概要
2. awk の構文
2. コマンド オプション
3. モード
3.2. awk の環境変数
5. awk 演算子
6. レコードとフィールド
6.2. フィールド区切り文字
7. POSIX 文字セット
9.比較式
11. 範囲テンプレート
12. passwd ファイルの有効性を検証する例
14. 変数
14.2. リダイレクトとパイプ
14.5. 条件文
14.6. ループ
14.7. 配列
15. 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 [options] 'script' var=value file(s)

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 スクリプトは、次のパターンと操作で構成されます。
pattern {action} ($awk '/root/' テスト、または $awk '$3
どちらもオプションです。パターンがない場合、アクションはすべてのレコードに適用されます。デフォルトでは、各入力行はレコードですが、ユーザーは RS 変数を使用して異なる区切り文字を指定できます。

3.1. パターン
パターンは次のいずれかになります:

/正規表現/: ワイルドカードを使用した拡張セット。

関係式: 以下の演算子表の関係演算子を使用して、文字列または数値の比較などの演算を実行できます。たとえば、$2>%1 は 2 番目のフィールドが最初のフィールドより長い行を選択します。

パターン マッチング式: 演算子 ~ (一致) と ~ (一致しない) を使用します。

Mode、mode: 行の範囲を指定します。この構文には BEGIN パターンと END パターンを含めることはできません。

BEGIN: 最初の入力レコードが処理される前に実行されるアクションをユーザーが指定できるようにします。通常はここでグローバル変数を設定できます。

END: 最後の入力レコードが読み取られた後にユーザーにアクションを実行させます。

3.2. 操作
操作は、改行またはセミコロンで区切られ、中かっこで囲まれた 1 つ以上のコマンド、関数、式で構成されます。主要な部分は 4 つあります:

変数または配列の割り当て

出力コマンド

組み込み関数

制御フローコマンド

4. 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 配列添字区切り文字 (デフォルト値は

http://www.bkjia.com/PHPjc/319039.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/319039.html技術記事 Copyright2004この記事は GPL 契約に準拠しており、転載、変更、配布することは自由です。 初版発行日: 2004 年 8 月 6 日 -------------------------------------------------- -- --------------------------------...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。