###導入###
| awk の機能の謎を徐々に解明していきます このセクションでは、awk の組み込み変数の概念を紹介します。 awk で使用できる変数には、ユーザー定義変数と組み込み変数の 2 種類があります。
|
awk の機能の謎を徐々に解明していきます このセクションでは、awk の組み込み変数の概念を紹介します。 awk で使用できる変数には、ユーザー定義変数と組み込み変数の 2 種類があります。 Awk の組み込み変数にはすでに事前定義された値がありますが、これらの値を慎重に変更することもできます。
awk 組み込み変数には次のものが含まれます:
FILENAME: 現在の入力ファイル名-
NR: 現在の入力ライン番号 (入力ライン 1、2、3...などを参照)-
NF: 現在の入力行のフィールド番号-
OFS: 出力フィールド区切り記号-
FS: 入力フィールド区切り記号-
ORS: 出力レコード区切り文字-
RS: 入力レコード区切り記号-
######ファイル名 :######
上記の awk 組み込み変数を使用するいくつかの方法を引き続き示します。現在の入力ファイルの名前を読み取るには、次のように FILENAME 組み込み変数を使用できます: $ awk ' { print FILENAME } ' ~/domains.txt
各行にファイル名が 1 回出力されることがわかります。これは、FILENAME 組み込み変数を使用する場合の awk のデフォルトの動作です。 NR を使用して入力ファイル内の行 (レコード) 数をカウントできます。次の例でわかるように、空の行もカウントされることを覚えておいてください。出力ファイルの内容 cat コマンドを使用してファイル Domains.txt を表示すると、14 行のテキストと 2 行の空白行があることがわかります。
$ cat ~/domains.txt
awk は行数をカウントします:
リーリー
awk はファイル内のフィールドの数をカウントします:
リーリー
FS 組み込み変数:
FS 組み込み変数を使用して、awk が入力行をフィールドに分割する方法を定義する入力ファイル区切り文字を指定することもできます。 FS のデフォルト値は「スペース」と「タブ」ですが、FS 値を任意の文字に変更して、awk が状況に応じて入力行を分割できるようにすることもできます。これを実現するには 2 つの方法があります: 1 つ目は FS 組み込み変数を使用すること、2 つ目は awk の -F オプションを使用することです。 Linux システム上の /etc/passwd ファイルを見てみましょう。ファイル内の各フィールドはコロン (:) で区切られています。したがって、特定のフィールドをフィルターで除外する場合は、コロン (:) を新しいものとして指定できます。フィールド区切り文字、および awk はパスワード ファイルの各フィールドをフィルターします。次のように -F オプションを使用できます: $ awk -F':' '{ print $1, $4 ;}' /etc/passwd
さらに、次のように FS 組み込み変数を使用することもできます:
$ awk ' BEGIN { FS=":" ; } { print $1, $4 ; } ' /etc/passwd
OFS 組み込み変数を使用する:
OFS 組み込み変数を使用して、出力のフィールド区切り文字を指定します。これにより、指定された文字を使用して出力フィールドを区切る方法が定義されます。awk 出力に区切り文字を使用します: $ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd
このセクションでは、事前定義された値を持つ awk 組み込み変数を使用するというアイデアを学びました。ただし、これらの値を変更することもできますが、何をしているのかを理解し、(これらの変数値を) 完全に理解している場合を除き、これはお勧めできません。
この後も、awk コマンドの操作でシェル変数を使用する方法を学習していきますので、引き続きお付き合いください。