在寫shell scripts,gawk很常用吧…例如印file 的第一、二、五、六行
gawk '{print $1, $2, $5, $6}' file
如果想把第五,六行乘一個放大係數(如:10倍)
gawk '{print $1, $2, $5*10, $6*10}' file
上面這樣寫當然沒問題。但是為了方便,放大係數通常放到變數裏(就叫做SCALE好了)
SCALE=10 gawk '{print $1, $2, $5*$SCALE, $6*$SCALE}' file
這樣就不行了…因為gawk自已也有變數,BASH也有變數,誰是誰要先弄清楚才行。
gawk變數設定方法是在' ' 的後面 與 輸入資料檔的前面(如果有的話) 設定。
改成如下:
SCALE=10 gawk '{print $1, $2, $5*sca, $6*sca}' sca=$SCALE file
注意,在gawk裏的變數是不用加"$"字符的。
有了這個,還可以對第n欄做累加。
gawk 'sum=sum+$1 {print $1, sum}' sca=$SCALE file
上面的指令會輸出file檔案裏的第一柵,以及第一欄的加總。
gawk 'sum=sum+$1; ss=ss+$2 {print $1, sum, $2, ss}' sca=$SCALE file
上面的指令會輸出file檔案裏的第一欄、第一欄的加總、第二欄與第二欄的加總。
沒有留言:
張貼留言