2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

awkコマンドを使ってログファイルを見やすくした

Last updated at Posted at 2017-08-30

行数の多いログファイルをcatする時に便利だったのでまとめました。

##スペース区切りのログファイルでawk

適当にログファイルを作ります。

test.log
2017-08-30 20:00:00 id : 1 status : success
2017-08-30 21:00:00 id : 2 status : success
2017-08-30 22:00:00 id : 3 status : error

###普通のcatと同じように表示

$ cat test.log | awk '{print $0}'
2017-08-30 20:00:00 id : 1 status : success
2017-08-30 21:00:00 id : 2 status : success
2017-08-30 22:00:00 id : 3 status : error

###idとstatusを表示(列の操作)

$ cat test.log | awk '{print $5, $8}'`
1 success
2 success
3 error

スペース区切りで数えた番号の列を表示できます($0は1行全部)

###errorの行だけ取得(行の操作)

$ cat test.log | awk '/error/{print $0}'`
2017-08-30 22:00:00 id : 3 status : error

awk '/検索したい文字列/{print}' で行を絞ることができます

###errorの行だけ かつ idのみ取得

$ cat test.log | awk '/error/{print $5}'`
3

行と列の操作で errorの含まれる行 かつ idのみ表示することができます

##カンマ区切りのログファイルでawk

適当にログファイルを作ります。

test2.log
2017-08-30,20:00:00,id,:,1,status,:,success
2017-08-30,21:00:00,id,:,2,status,:,success
2017-08-30,22:00:00,id,:,3,status,:,error
  • idとstatusを取得(セパレータ指定)
$ cat test2.log | awk -F "," '{print $5, $8}'`
1 success
2 success
3 error

-F の指定でセパレータを指定できます(デフォルトはスペース)

#まとめ

awkは行と列の操作ができる

awk `{print $1}` => スペース区切りで1列目を取得
awk `{print $1, $2}` => スペース区切りで1列目と2列目を取得
awk `/error/{print $0}` => 文字列'error'を含む行を取得
awk `/error/{print $1, $2}` => 文字列'error'を含む行の1列目と2列目を取得
awk -F "," `{print $0}` => 区切り文字を","に設定することもできる

以上、基本だけですが使えると便利そうです。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?