当前位置: 技术问答>linux和unix
关于sed 替换的问题 急急急(请各位老大帮忙看看,谢谢了!)
来源: 互联网 发布时间:2017-01-05
本文导语: 本帖最后由 Rookie_CEO 于 2011-10-08 22:31:52 编辑 通过sed -i 's/HH2011-10-08 00:00:00HH/1000211/g' sedfile1.dat 可以直接替换 [sms@zxx]$ cat sedfile1.dat 1000211 HH2011-10-08 00:00:00HH HH2011-10-08 01:00:00HH 1000211 HH2011-10-08 00:00:00HH HH2011-10-08 ...
[sms@zxx]$ cat sedfile1.dat
1000211
HH2011-10-08 00:00:00HH
HH2011-10-08 01:00:00HH
1000211
HH2011-10-08 00:00:00HH
HH2011-10-08 01:00:00HH
[sms@zxx]$ sed -i 's/HH2011-10-08 00:00:00HH/1000211/g' sedfile1.dat
[sms@zxx]$ cat sedfile1.dat
1000211
1000211
HH2011-10-08 01:00:00HH
1000211
1000211
HH2011-10-08 01:00:00HH
[sms@zxx]$
现在的问题是 有多个地方要替换,替换的地方是有规律的(HH YYYY-mm-dd HH24:mi:ss HH),所以写成变量的形式
sed -i 's/"$tt1"/"$tt2"/g' sedfile2.dat ,但是在单引号里面的数据 shell都认为是值,不把它替换成变量对应的值
所以这句话执行了之后是没有任何效果的,达不到替换的目的,请各位老大帮忙看看,这种问题该怎么处理
tt1="HH2011-10-08 00:00:00HH"
tt2=1000211
sed -i 's/"$tt1"/"$tt2"/g' sedfile2.dat
[sms@zxx]$ tt2=1000211
[sms@zxx]$ tt1="HH2011-10-08 00:00:00HH"
[sms@zxx]$ echo $tt1
HH2011-10-08 00:00:00HH
[sms@zxx]$ tt2=1000211
[sms@zxx]$
[sms@zxx]$ sed -i 's/$tt1/$tt2/g' sedfile2.dat
[sms@zxx]$ cat sedfile2.dat
HH2011-10-08 00:00:00HH
HH2011-10-08 01:00:00HH
HH2011-10-08 00:00:00HH
HH2011-10-08 01:00:00HH
HH2011-10-08 00:00:00HH
HH2011-10-08 01:00:00HH
[sms@zxx]$ sed -i 's/"$tt1"/"$tt2"/g' sedfile2.dat
[sms@zxx]$ cat sedfile2.dat
HH2011-10-08 00:00:00HH
HH2011-10-08 01:00:00HH
HH2011-10-08 00:00:00HH
HH2011-10-08 01:00:00HH
HH2011-10-08 00:00:00HH
HH2011-10-08 01:00:00HH
[sms@zxx]$
|
算你厉害
sed -i "s/$tt1/$tt2/g" sedfile2.dat
sed -i "s/$tt1/$tt2/g" sedfile2.dat
|
方法1:对变量$var再加一对单引号,sed最外层是一对单引号
方法2:变量为${var},sed最外层是一对双引号
方法2:变量为${var},sed最外层是一对双引号