ホームページ > バックエンド開発 > PHPチュートリアル > axisisiconworkshop awk の紹介と学習ノート集 ページ 1/3

axisisiconworkshop awk の紹介と学習ノート集 ページ 1/3

WBOY
リリース: 2016-07-29 08:38:00
オリジナル
1008 人が閲覧しました

Copyright © 2004 この記事は GPL 契約に準拠しており、転載、変更、配布は歓迎されています。
初公開日: 2004年8月6日
----------------------------------------------------- -----------------------------------------------
表目次
1. awk の概要
2. awk の構文
2. コマンド オプション
3. モード
3.2. awk の環境変数
5. awk 演算子
6. レコードとフィールド
6.3. フィールド区切り文字
7. 一致演算子 (~)
10.比較式
11. 範囲テンプレート
12. passwd ファイルの有効性を検証する例
14. 変数
14.3. リダイレクトとパイプ
14.5. 条件文
14.6. ループ
14.7. awk の組み込み関数
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 または --asign 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 番目のフィールドが最初のフィールドより長い行を選択します。
パターン マッチング式: 演算子 ~ (一致) と ~! (不一致) を使用します。
モード、モード: 行の範囲を指定します。この構文には 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 配列の添え字区切り文字 (デフォルト値は
以上、 axisisiconworkshop awk の紹介と学習ノート集を 1/3 ページにわたって紹介しました。 PHP チュートリアルに興味のある友人の参考になれば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート