文章标签 ‘awk’

sed,awk使用小记

2011年8月25日 没有评论

awk 默认是用空格作为分隔符,后面的大括号需要用单引号引起来,不能用双引号,否则就得不到想要的结果,如果要指定分隔符,使用 -F 分隔符。例如从文本-rw-r–r– 1 root root 165 Aug 25 12:51 runAll.sh中获取165,可以使用命令:echo “-rw-r–r– 1 root root 165 Aug 25 12:51 runAll.sh” | awk -F” ” ‘{print $5}’,其中 awk -F” ” ‘可以省略.。

sed -e  patt 中的patt需要用引号引起来,单引号双引号都行。sed能很方便的将文本中指定字符串替换成另外的字符串,配合其他的命令可以一次性把一个目录下所有文件进行替换操作。例如把文本 “start zhou yang end”替换成“start yang zhou  end”, 即把yang前面的一个单词和与yang换位置,可以使用命令:

echo "start zhou yang end" | sed -e 's/ \(.*\) \(yang\)/ \2 \1/g'

。命令:

grep "114.87.189.33"  * -R | awk -F: '{print $1}' |sort |uniq | xargs sed -i "s/114.87.189.33/214.187.189.33/g"

则会把当前目录下所有文件的114.87.189.33替换成214.187.189.33。注意sed的patt里很多符号需要转义的,比喻()等,g表示替换全部。

关于sed,awk的用户可以参看 linux下监控网卡流量的shell脚本 中的用法。

另外在shell中把命令的输出结果存放在一个变量可以用以下两种方式

1,$var = `cmd`

2,  $var = $(cmd)

分类: Linux 标签: , ,

linux下shell的浮点数四则运算

2011年8月14日 没有评论

shell下的四则运算有两种方式,一个是使用expr,另外一个用$(()),例如 expr 数1 运算符(+-*/)  数2或$(( 数1 运算符(+-*/)  数2)),需要注意的是使用expr时操作符的前后需要一个空格.但是上述两个都不能进行浮点数的运算,为了达到计算浮点数,可以借助命令awk来实现.例如 awk ‘BEGIN{print 7.01/5+2.3 }’执行后结果为3.702.如果两个操作数是保存在变量中,必然 a=2.2,b=5,需要计算a除以b该怎么操作呢? awk ‘{print $a/$b}’,很可惜,这样是不行的,似乎在awk里面无法通过$a来获取变量的值,但是可以通过echo的方式把变量值传入, echo “$a $b” | awk ‘{print $1/$2}’,这样就可以了,如果还是操作数,都加在echo中就行了.

分类: Linux 标签: , , , ,

无觅相关文章插件,快速提升流量