Linux 於 Bash Shell 如何將檔案內的內容切割到每個變數,或者如何撈外部 API 的內容,並 assign 到每個變數去?
標籤: shell
Bash 如何 Pipe 再透過 sudo 寫入檔案
於 Linux 的 bash shell 很常會 cat 某些資料,處理完後再寫入到某個檔案,但是常常會遇到權限不足,要怎麼做呢?
Shell script 依照空格分隔 每行一個字
Shell script 可以使用 tr / sed 來完成~ 如果還要某個特定欄位來做,可以在搭配 cut 或 awk~
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 快速鍵結合,方便查詢
Bash shell 列出自己定義的 Function
自己寫了不少的 Shell script function 來使用,但是平常沒在記憶名字,常常忘記又寫了一次,在 Bash shell 要怎麼列出自己寫得 Function name 呢?
Linux sleep 如何暫停半秒、微秒
於 Linux Bash shell 常常會將一堆命令使用 | 接著,一長串的執行下去。
但是某些指令不能下太快,某些程式會需要啟動、初始化等等,一直 | 接下去,會有問題,需要 sleep 一下。
不過 Linux sleep 平常都使用 sleep 1 (1秒),要怎麼停 0.5、0.001 秒呢?
Linux Shell 找出指定日期之後 有修改的檔案
於 Linux bash shell 要計算兩個日期的差異,然後將此日期之後有修改的檔案印出來,要怎麼做呢?
Linux 使用 date 做 timestamp 格式轉換計算
Linux bash shell 想要做下述事情:
- 現在時間 轉換成 timestamp
- 將 timestamp 轉換回 一般人看的時間
要怎麼做呢?
Bash shell 使用 sed 做 trim 的動作
Bash shell 想要寫類似 trim() 做前後移除某個符號等動作,要怎麼做呢?