出力パターン
出力パターン
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