Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

把shell变量传给awk有3种方式

Posted on 2010-08-26 18:16 Prayer 阅读(2875) 评论(1)  编辑 收藏 引用 所属分类: Shell
1.利用shell cmdline的特性
A=123
awk '/^'"$A"'/ { print $2 }'
 
上面的cmdline中,shell把'/^'"$A"'/ { print $2 }'作为awk的第一个参数,这个'/^'"$A"'/ { print $2 }'可以分为3小块
(1)'/^':因为/^被单引号引起来,所以shell传这个小部分给awk时候,传的是:/^
(2)"$A":因为$A是被双引号引起,所以shell传这个小部分给awk时候,先把$A,做给“变量替换”,所以传的是:123
(3)'/ { print $2 }':因为/ { print $2 }被单引起来,所以传的是:/ { print $2 }
 
这3个小部分做为一个参数传给awk,合计3个小部分,那么传的就是
/^123/ { print $2 }
 
 
2.使用-v参数
A=123
awk -v B="$A" '/^B/ { print $2 }'
 
3.pass variable settings into awk as "fake file names"
awk '/^B/ { print $2 }' B="$A"

Feedback

# re: 把shell变量传给awk有3种方式[未登录]  回复  更多评论   

2013-12-19 10:55 by xxx
2和3貌似有问题

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理