最近需要把整站js中的域名替成变量,awk查资料写了大半天也没整出个啥,话说我的正则还是太初级,话说我买的正则书也不知跑到哪去了,话说好书还是要放到家里
…
于是还是用python,没有用正则,但是好像跑起来真的比awk快~
脚本下载:replace_keyword.zip
效果:
//替换之前 var s = '<a href="http://blog.abc.com/show">'; //替换之后 var s = '<a href="http://blog.' + siteDomain + '/show">';
使用方法:
首要要修改脚本里要替换的关键词
config['keyword'] = 'abc.com' config['vname'] = 'siteDomain'
然后
python replace_keyword.py ./myscript.js > /tmp/ooxx mv /tmp/ooxx ./myscript.js
批量替换的话就需要写个简单的shell:replace_keyword.sh
#!/bin/sh python replace_keyword.py $1 > /tmp/ooxx mv /tmp/ooxx $1
批量替换整个目录
find ./ -name "*.js" | xargs -i sh replace_keyword.sh {}
最后任务远没有结束,这个脚本还不够强大,它只会替换字符串中的关键字,作为对象属性名称的字符串不会替换,正则中的关键字无法替换,像下面:
var config = { 'blog.abc.com' : 1, 'game.abc.com' : 2 } //需要手工替换为 var config = {}; config['blog' + siteDomain] = 1; config['game' + siteDomain] = 2; if ( /abc\.com/.test(str) ){} //需要手工替换为 if ( new RegExp( siteDomain.replace('.','\.') ).test(str) ){}
所以运行完脚本之后还需要检查未替换的地方,手工完成
find ./ -name "*.js" | xargs grep 'abc\\\?\.com'
