我遇到以下代码的问题,如果我制作1.log文件但不修改包含PHP eval(..)的文件。向我展示了以下内容:sed: no input files.
因为我错了?
grep -lr --include=*.php "eval(base64_decode" ./ >> 1.log | xargs sed -i.bak 's/<?php eval(base64_decode[^;]*;/<?php\n/g'
答案 0 :(得分:1)
您收到错误消息,因为您的grep命令不会产生任何输出(您通过xargs传递给sed)。你可能想要这个:
grep -lr --include=*.php "eval(base64_decode" ./ | xargs sed -i.bak 's/<?php eval(base64_decode[^;]*;/<?php\n/g'
替代文件列表:
grep -lr --include=*.php "eval(base64_decode" ./ > files
sed -i.bak 's/<?php eval(base64_decode[^;]*;/<?php\n/g' $(cat files)
答案 1 :(得分:1)
如果要将输出保存在日志文件中并将其输出到xargs
,请使用tee
:
grep -lr --include=*.php "eval(base64_decode" ./ |
tee -a 1.log |
xargs sed -i.bak 's/<?php eval(base64_decode[^;]*;/<?php\n/g'
-a
选项会使tee
附加到文件中。