出力パターン

出力パターン

AWKの使い方

AWKは次のように呼び出します。

awk コマンド (ファイル名)

1列だけを出力してみましょう

標準出力のwhoは次の通りです。

[user01@localhost ~]$ who
user01   tty1         2020-06-09 14:22
user01   pts/0        2020-06-10 03:39

whoにパイプ(|)を追加してawkを適用することができます。
ドル記号($)で列番号で指定します。
指定した列の内容をprint コマンドで出力します。

[user01@localhost ~]$ who | awk '{print $1}'
user01
user01

任意の列だけの出力ができます。

区切り文字としてコンマを追加すると、任意の例だけ出力されます。
次のように入力し、ユーザー名とログインした時刻を出力します。

[user01@localhost ~]$ who | awk '{print $1,$4}'
user01 14:22
user01 03:39

printにパターンを含めて、フィルターをかけます。

パス「/etc/passwd」内のユーザーID番号(3列)が1,000以上の行の1列と3列を出力します。
次のように入力すると、3番目のフィールド($3)に1,000以上の値が含まれている場合のみ、
印刷アクションを実行します。

[user01@localhost ~]$ awk -F: '$3 >= 1000 {print $1,$6}' /etc/passwd
user01 /home/user01

パターンにキーワードを指定します。

マウントされたファイルシステムのUUIDが見たい場合は、/etc/fstab内の文字列「UUID」を検索すると、その情報が返されます。

[user01@localhost ~]$ awk '/UUID/ {print $0}' /etc/fstab
UUID=18fbc688-ffa9-4c45-b0ce-7a7458781eb1 /boot                   xfs     defaults        0 0

フィルターを修正して、「UUID」で始まる行のみを出力するように指示できます。

これを行うには、行頭トークン(^)を含め次のように入力します。

[user01@localhost ~]$ awk '/^UUID/ {print $0}' /etc/fstab
UUID=18fbc688-ffa9-4c45-b0ce-7a7458781eb1 /boot                   xfs     defaults        0 0

print関数の列番号を「$1」に変更すると、1列だけを出力するよう制限することもできます。

user01@localhost ~]$ awk '/^UUID/ {print $1}' /etc/fstab
UUID=18fbc688-ffa9-4c45-b0ce-7a7458781eb1


NEXT>> セパレーター