《Disney +》 迪士尼、Marvel、彼思、星球大戰…  在《NBA 2K21》MyTEAM第5季:英雄時代打造超級強隊   人偶劇「到BIO村玩吧♪」最終回大公開!《惡靈古堡8村莊》全球出貨量突破300萬套!   包含電競直播主 Cosplayer事務所PP Enterprise新人發掘計劃!   日本最大汽車連鎖百貨AUTOBACS將進駐電競設施!「AUTOBACS REDEE Emotorsports Stadium」於4月16日隆重開幕!   在現實世界一起去狩獵吧!USJ首個魔物獵人VR遊戲設施「Monster Hunter World:Iceborne XR WALK」明年春季登場!   LoL×PUBG!?英雄聯盟動畫系列「奧術」與「絕地求生Mobile」的聯乘合作決定!   龍族拼圖與《勇者鬥惡龍 達伊的大冒險》首次合作即將登場!   以FF7作為舞台的手機大逃殺遊戲「FINAL FANTASY VII THE FIRST SOLDIER」開始接受事前登錄! 

AWK 取得欄位的「最後」與「倒數第二個值」的方法

商業

使用 AWK Parse access.log,在某些特定條件會發生抓錯欄位的情況(若使用 空白 切割,沒使用 " 搭配切割,就容易抓錯欄位)

不過經常快速處理,都是使用空白切割即可,那要抓最後的欄位,比較簡單的方式就是一樣「空白切割」或「" 切割」,只是資料抓法是從後面往前抓。

  • AWK 要取得最後一個欄位的值是使用: $NF
  • AWK 要取得倒數第二個欄位的值是使用: $(NF-1)
  • 由後往前取,就繼續 -2、-3... 下去即可

所以要抓 access.log 倒數第二欄 和 第二欄,範例如下:

  • cat access.log | awk -F" '{print $(NF-2),$2}' # 使用 " 切割

想抓超過 500ms 的網址(註:elapsed 並不是預設就有,需要另外加上)

  • cat access.log | awk -F" '{print $NF,$2}' | awk '{print $1,$3}' | sed 's/elapsed=//' | sed 's/us//' | awk '{if ($1 > 500000) {print $1, $2}}'
  • cat access.log | awk -F" '{print $(NF-2),$2}' | awk '{print $1,$3}' | sed 's/elapsed=//' | sed 's/us / /' | awk '{if ($1 > 500000) {print $1, $2}}'
Tsung

隨機商業新聞