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

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

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

  • AWK 要取得最後一個欄位的值是使用: $NF
  • AWK 要取得倒數第二個欄位的值是使用: $(NF-1)
  • 由後往前取,就繼續 -2、-3... 下去即可
  • 範例:awk '{print $(NF - 2)}' # 從後面數來第二個

所以要抓 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}}'

cheat.sh:Cheatsheet 的線上、CLI 查詢工具

程式撰寫常常需要線上查資料、查 Library 或者查詢寫法(ex: foreach 的參數) 等等,有個線上服務出現,將這些種種問題一次解決。

各種程式語言、各種寫法範例、Cheatsheet 等等,在這個網站都可以直接查到,而且還有提供 CLI (crt.sh) 直接透過 CURL 存取查詢。

使用方式

  • curl https://cheat.sh/ # 即可開始使用
  • curl https://cht.sh/ # 即可開始使用

註:此篇最下面有將 cht.sh 與 vim 快速鍵結合,方便查詢

閱讀全文〈cheat.sh:Cheatsheet 的線上、CLI 查詢工具〉

Linux sleep 如何暫停半秒、微秒

於 Linux Bash shell 常常會將一堆命令使用 | 接著,一長串的執行下去。

但是某些指令不能下太快,某些程式會需要啟動、初始化等等,一直 | 接下去,會有問題,需要 sleep 一下。

不過 Linux sleep 平常都使用 sleep 1 (1秒),要怎麼停 0.5、0.001 秒呢?

閱讀全文〈Linux sleep 如何暫停半秒、微秒〉

Linux 使用 find、read 對目錄內的指定檔案做處理

Linux 於 Bash shell (CLI) 要把檔案列出來,再來要抓出每個檔名,再分別處理,script 要怎麼寫呢?

閱讀全文〈Linux 使用 find、read 對目錄內的指定檔案做處理〉

Bash shell 使用 CURL urlencode 送參數

Bash shell 想要送中文等需要被 urlencode 過的文字到網址去,要怎麼做呢?

此篇使用 curl 直接傳送,另外在紀錄 Bash 的 urlencode() / urldecode() 寫法

閱讀全文〈Bash shell 使用 CURL urlencode 送參數〉