我需要扫描服务器中的所有js文件并删除包含以下内容的行:
document.write("<script type='text/javascript' src='http://*
我需要每天都在cron上设置它。 我想我需要创建一个shell来完成它。
你能帮助我吗?
答案 0 :(得分:1)
可能你正在寻找SED:
sed -i 's/document\.write[(]"<script type[=].text\/javascript. src[=].http:\/\/./\/\*code removed\*\//g' *.js
我的示例输入文件:
document.write("<script type='text/javascript' src='http://*
document.write("<script type='text/javascript' src='http://*
document.write("<script type='text/javascript' src='http://*
asddocument.write("<script type='text/javascript' src='http://*
document.write("<script type='text/javascript' src='http://*asd
asdasd
转变为:
/*code removed*/
/*code removed*/
/*code removed*/
asd/*code removed*/
/*code removed*/asd
asdasd
请注意,如果您想阻止网站空间上的脚本加载其他数据,那么所有这些机制都不足!
这(和许多其他变种)将是一种威胁,但不符合这些模式:
var secretVariable = document;
secretVariable.write("<script type='text/javascript' src='http://some.evil.code'/>");
答案 1 :(得分:0)
如果这是确切的行,并且您想要删除整行(而不只是解析该文本),那么您可以使用egrep -v
打印除匹配行之外的所有行。
egrep -v "document.write\(\"<script type='text/javascript' src='http://" oldfile > newfile
以下是处理所有.js文件的find语句:
for f in $(find /directory/path -name '*.js'); do egrep -v "document.write\(\"<script type='text/javascript' src='http://" $f > TT ; mv TT $f ; done
答案 2 :(得分:0)
perl -p -i.bak -e 's///' *.js
会做同样的事情