在字符替换中,可能会遇见引号,“/”等的替换,这时应该注意,sed的命令原型是:
成都创新互联公司2013年开创至今,先为汨罗等服务建站,汨罗等地企业,进行企业商务咨询服务。为汨罗企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
sed -i "s/oldstring/goalstring/g" file
如果一个路径是data/path/abc,现在要将此路径换成一个字符串cde
但是这时跟在s后边的其实是分隔符,用以将oldstring替换成cde;他可以使用任意字符,这时如果字符串中有“/”,就会发生混乱,在这个时候可以用#当做分隔符,就变成
sed -i "s#abc#cde#g" file
这时如果abc中包含“/”就可以随便替换了;
引号的替换:
需要将引号转义,使用反斜杠“\”,比如替换" ' 'div' ' ",如果需要将它替换成‘div' ;可以使用sed -i s#\"\'\'#\'#g就能替换了。
路径"../syslog/tmp/"替换为"/data/syslog/tmp”
首先要搞清楚,转义符\的作用是消除有特殊含义字符的特殊意义,使其还原为普通字符。
sed
-i
's/\.\.\/syslog\/tmp\//\/data\/syslog\/tmp/'
file.ini
点号.在正则表达式中有其特殊含义(表示任意一个字符),所以要表示点号本身,需要使用转义符。
sed替换命令的格式一般为
s/.../.../
,所以如果里面的内容也包含
/
,比如你这里的路径,为了区分,也需要转义。
最后说明一下,这样看起来很混乱,比较容易搞错。
其实sed的替换命令格式不一定要是
s/.../.../,下面这样也都可以:
s#...#...#
s_..._..._
即命令s后可以跟任意字符,只要跟替换内容不重复即可。这样,路径里的/就不再需要转义了。
正斜杠,又称左斜杠,符号是(/);反斜杠,也称右斜杠,符号是(\)。
==============正斜杠(/)的作用:
1、作为路径的分隔符,采用正斜杠(/),比如"/home/hutaow"
================反斜杠(\)的作用:
1、在正则表达式中,采用表达 \(\);\{m,n\};\?;\+
2、一个命令可以用(\)分成多行
3、作为转义(\)使用
后续补充。。。。。
在linux命令前加上反斜杠,可以临时取消使用别名。比如 \rm -rf
反斜杠是直接调用rm的原命令,为了保证你使用的命令不是各种系统别名,经常会在命令前面加一个反斜杠来去除别名。
不是所有linux版本都这样。RHEL5,6没这个问题。
你的意思是多了一个"\"吗? 你是在输完ls $HOME再按tab键?