Chinaunix首页 | 论坛 | 博客
  • 博客访问: 627542
  • 博文数量: 104
  • 博客积分: 1968
  • 博客等级: 上尉
  • 技术积分: 1587
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-01 17:52
文章分类

全部博文(104)

文章存档

2013年(12)

2012年(50)

2011年(42)

分类: LINUX

2011-08-17 15:01:50

昨天写个小脚本其中有一句:
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) |
给主人留下些什么吧!~~