昨天写个小脚本其中有一句:awk 'BEGIN { FS = "." } { ORS = "."; for ( k = 1; k <= (NF - $2); k++ ) print $k }'
问题是$2这个参数传不进来。最后找资料才明白awk中本来"$"就使用的多所以会和参数前的“$”无法区分,所以这里应该写成这样:
awk 'BEGIN { FS = "." } { ORS = "."; for ( k = 1; k <= (NF - '"$2"'); k++ ) print $k }'
还有在网上看到的一些关于awk参数传递的方式:
這個問題有兩個可行的方法,第一個方法只是把程式當中需要用到此變數的
地方直接展開,例如要得知您目前使用哪些 tty,可以使用:
who | awk '/^ ' "$USER " '/ { print $2 } ' (1)
awk 程式的程式通常會用單引號括起來,因為 awk 程式裡面經常會用到 $
字元,如果使用雙引號的話,shell 本身會解釋這個字元。所以啦,在這種
特殊情形下,我們想要 shell 解釋 $USER 當中的 $ 字元時,就必需先用
單引號把前半段的句子暫時括起來,然後用雙引號把 $USER 括起來,再用
單引號把隨後的句子括起來。請注意,雙引號在某些狀況下可以略去不寫,
也就是說,可以
阅读(1680) | 评论(0) | 转发(2) |