Chinaunix首页 | 论坛 | 博客
  • 博客访问: 580697
  • 博文数量: 353
  • 博客积分: 1104
  • 博客等级: 少尉
  • 技术积分: 1457
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-23 23:02
个人简介

1、刚工作时做Linux 流控;后来做安全操作系统;再后来做操作系统加固;现在做TCP 加速。唉!没离开过类Unix!!!但是水平有限。。

文章存档

2015年(80)

2013年(4)

2012年(90)

2011年(177)

2010年(1)

2009年(1)

分类:

2011-10-23 13:10:38

原文地址:sed和awk中使用shell变量 作者:iorifreedom

最近做预料处理,使用bash脚本,需要在脚本的sed和awk使用shell变量以控制循环,出现一些问题后找到解决办法如下:
1.sed使用shell变量
 这个比较好办,sed命令中可以用单引号和双引号,一般我们习惯用单引号,如下:
 sed -i 's/pattern1/pattern2/g' inputfile
 如果要使用shell变量,就需要使用双引号
pattern1=XXX
pattern2=XXX
sed -i "s/$pattern1/$pattern2/g" inputfile

2. awk使用shell变量
有很多种方法,最简单的一种记录如下:
line=XXX
awk '$1=="'$line'"{print $0}' inputfile
注意的是,awk命令本身需要将模式和动作部分用单引号引用,所以里面引用shell变量是双引号+单引号,双引号是保证正确处理变量值的空格,放大一下:
"'$line'"
另外:
awk '$1="win"{$"'$curcls'"=$"'$curcls'"+1;print $0}' nwf
则是另一种间接引用模式,因为通常shell的间接引用是使用
eval echo \$$var
更高级的
a=10
b=a
c=${!b}
则c=10
阅读(177) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~