当前位置: > Linux编程 >

sed,awk使用小记

时间:2015-01-11 01:57来源:linux.it.net.cn 作者:IT

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)

(责任编辑:IT)
------分隔线----------------------------