- 论坛徽章:
- 0
|
使用shell时间不长,对sed,awk命令和正则表达式还不是很熟,到这里求点经。
使用sed替换字符串时,如果目的串中有一些特殊字符(如:'/'),则需要转义字符‘\’进行转换处理;如果目的串在一个变量里怎么办??
我现在的方法是先把目的串中的特殊字符(如'/')通过 sed 转化成一般字符(如'|'),然后在将可以被sed操作的目的串 替换到文本文件内,然后在用sed 在将一般字符(如'|')替换为特殊字符(如'/'),在写回到文本文件中,完成文本文件的最终替换。好麻烦,感觉好丑,不知道大家在遇到这种情况下如何处理??
比如:
A_file 文件内容:
<property url_address>
jdbc.db2.rul://1.1.1.1:50001/PM8KV1R1
</proberty>
B_file 文件
<property url_address>
@{urlclass}
</proberty>
目的:
需要用A里面的 url value 替换 B 文件里面的 @{urlclass}
实现如下:
#!/bin/bash
chmod +x $0
dsturl=`grep PM8KV1R1 A_file | sed 's/\//|/g'`
sed 's/@{urlclass}/'"$dsturl"'/g' B_file >tmp.xml
sed 's/|/\//g' tmp.xml>tmp1.xml
mv tmp1.xml B_file
结果:
B_file 文件 关于URL的value变为如下:
<property url_address>
jdbc.db2.rul://1.1.1.1:50001/PM8KV1R1
</proberty>
[ 本帖最后由 wangng_3 于 2009-8-23 17:59 编辑 ] |
|