awkコマンドのprintで区切り文字を指定し、文字列を抽出する

awkコマンドのprintで区切り文字を指定し、文字列を抽出する

Amazonのアソシエイトとして、ITナレッジライフは適格販売により収入を得ています。

記事の文字数:662 / 総アクセス数:933 views

awkコマンドで文字列を抽出する場合、printを指定します。$0で行全体を、$nで区切り文字で区切られた部分を取得することができます。

awkコマンドにprintを指定して、文字列を抽出することができます。

awkとは

sed や grep の高機能なツールとして開発されていて、簡単な行ベースのテキストファイルを処理することができるコマンドです。

行全体を抽出

以下コマンドでaccess.logの末尾3行を出力します。

実行コマンド
awk '{ print $0 }' /var/log/nginx/access.log | tail -n 3

printに$0を指定することで、以下のように行すべてが出力されます。

実行結果
XXX.XXX.XXX.XXX - - [11/Sep/2024:11:39:42 +0000] "GET XXX HTTP/1.1" 200 20328 "https://it-life.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0"
XXX.XXX.XXX.XXX - - [11/Sep/2024:11:39:42 +0000] "GET XXX HTTP/1.1" 200 511 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0"
XXX.XXX.XXX.XXX - - [11/Sep/2024:11:39:43 +0000] "GET XXX HTTP/1.1" 200 243698 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0"

区切り(スペース)の4、5項目を抽出

以下コマンドで、aaccess.logの末尾3行のタイムスタンプを出力します。

実行コマンド
awk '{ print $4,$5 }' /var/log/nginx/access.log | tail -n 3

printに$4,$5のようにカンマ区切りで指定することで、スペース区切りの4,5項目が出力されます。

実行結果
[11/Sep/2024:11:39:42 +0000]
[11/Sep/2024:11:39:42 +0000]
[11/Sep/2024:11:39:43 +0000]

カンマ区切りの項目を抽出

以下ファイルを例に確認します。

sample.csv確認
$ cat sample.csv
aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii

以下コマンドで、CSVファイルの2列目を取得します。

実行コマンド
awk -F'[,]' '{ print $2 }' sample.csv

-Fに'[,]'を指定することで、区切り文字をカンマ「,」へ変えることができます。
以下のように、2列目が出力されることを確認しました。

実行結果
bbb
eee
hhh

まとめ

  • printに以下組み込み変数を指定して、値を抽出することができる。
組み込み変数説明
$0レコード
$nレコードのn番目のフィールド
  • -Fオプションを指定して、区切り文字を変更できる。(デフォルトはスペース)

余談

  • awkはオークと読みます。エー・ダブリュー・ケーではありません。
  • awkは、開発者の Alfred Vaino Aho(アルフレッド・エイホ)、Peter Jay Weinberger(ピーター・ワインバーガー)、Brian Wilson Kernighan(ブライアン・カーニハン)の3人の頭文字を取って名付けられました。

Linuxユーザにお勧めの本

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

ゼロからわかる Linuxコマンド200本ノック―基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!

難易度
実用性
習得度

アウトプット重視で記憶に定着しやすい。反復練習でLinux操作が自由自在になります。

エンジニア1年生のための世界一わかりやすいLinuxコマンドの教科書

難易度
実用性
読みやすさ


以上で本記事の解説を終わります。
よいITライフを!

Linuxユーザにお勧めの本

新しいLinuxの教科書 第2版

難易度
実用性
読みやすさ

一生モノの基礎知識が身につく定番書です。

人気記事


記事を評価

Thanks!
目次
Scroll to Top