星期五, 9月 23, 2022

近日學到的幾個 awk 用法

傳遞環境變數到 awk script 裡

之前傻傻的以為在 awk script 裡用 ${var} 就可以使用環境變數,但實測結果是不行的,後來才找到 Can we use shell variable in awk?

使用方法很簡單,執行 awk 時用 -v var=${env_var} ,在 awk script 裡就可以使用 var 變數來取得環境變數。

echo "" | awk -v HOME=${HOME} '{print HOME}'

找出指定欄位符合條件的列

想找出其中一欄符合條件的所有列,又不想用 grep,找到這篇 Using awk with column value conditions 跟這篇 AWK 判斷有符合的 字串 或 條件 再印出資料,就直接用指定欄位的變數來判斷就可以,例如 $1

awk '$1 == "findtext" {print $0}' input.txt

忽略註解

下面範例是忽略註解,計算行數的,從 AWK: is there some flag to ignore comments? 看來的

awk '/^[[:space:]]*#/ { NR-- } {sum+=$3} END { ... }' coriolis_data
awk '{ if ($0 ~ /^[[:space:]]*#/) {NR--} else {sum+=$3} END { ... }' coriolis_data

沒有留言: