神奇的sed命令

本随笔仅对sed命令的强大的文件内容替换功能做了实例,sed命令详解请见博客:http://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html

文件内容:

[ZONE1]

key1=value1

key2=value2

key3=value3



[ZONE2]

key1=value1

key2=value2

key3=value3



[ZONE3]

key1=value1

key2=value2

key3=value3



[ZONE4]

key1=value1

key2=value2

key3=value3

域ZONE1所在行号 :

sed -n "/^\[ZONE1\]$/="  filename

简单替换(不会修改源文件):

sed  's/^key1=value1/key1=newvalue/' filename

将文件中所有key1=value1替换成key1=newvalue :

sed -i "s/^key1=.*/key1=newvalue/"  filename

将文件3到5行中的key1=value1替换成key1=newvalue:

sed -i "3,5s/^key1=.*/key1=newvalue/"  filename

域ZONE1所在行开始向下count(N;)行中key1=value1替换成key1=newvalue,N;的个数有多少个即可向下匹配多少行:

sed -i "/^\[ZONE1\]$/{N;N;s/^key1=.*/key1=newvalue/}" filename

域ZONE1到下一个域(以中括号开头的)之间的key1=value1替换成key1=newvalue:

sed -i "/^\[ZONE1]$/,/^\[.*]$/s/^key1=.*/key1=newvalue/" filename

一次替换文件中多个不同内容:

sed  -i  's/^key1=value1/key1=newvalue/' -i  's/^key2=value2/key2=newvalue2/' filename

 

 查找datanode.conf中,域[MYSQLD]和下一个域之间, key为connectstring的行,文件大概如下:
#comment. ...
 
[MYSQLD]
clusterd
connectstring=22.234.44.21  #这一行就是要找的
[CLUSTER]
connectstring=22.234.44.21
 
 sed -n "/\[MYSQLD\]/,/\[.*\]/ s/connectstring/connectstring/p"  datanode_my.conf

 

 

 

你可能感兴趣的:(sed)