awkで”後ろからn番目”を指定する

今日知ったこと。
awkはよく使うけど、後ろからn番目を指定する方法があることを知ったのでメモ。

cat access.log
[10/Jun/2015:23:01:04 +0900] "POST /hoge?a=12345 HTTP/1.1" 200 2597 2832 "-" "Mozilla/5.0 (Linux; U; Android 2.3.7; ja-jp; SonyEricssonSO-03D Build/6.0.A.5.14)" "yyy.yyy.yyy.yyy"  "0.000"
[10/Jun/2015:23:02:04 +0900] "GET /hoge.jpg HTTP/1.1" 200 2597 2832 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4)" "xxx.xxx.xxx.xxx"  "0.000"

ここから、IPアドレスの部分”yyy.yyy.yyy.yyy”を抜きたい場合とか、

awk '{print $(NF - 2)}' access.log

とすれば良い。

ただ、CentOS6系では使えて、CentOS7系では

コマンドライン:1: (FILENAME=a.txt FNR=1) 致命的: フィールド -2 へのアクセスの試みです

とエラーが出る。
後で調べておこう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です