Bash 使用sed修改文件时出现问题

Bash 使用sed修改文件时出现问题,bash,shell,sed,grep,Bash,Shell,Sed,Grep,如果生成1.log文件但不修改包含PHP eval(..)的文件,则以下代码有问题。显示以下内容:sed:无输入文件。 我错了吗 grep -lr --include=*.php "eval(base64_decode" ./ >> 1.log | xargs sed -i.bak 's/<?php eval(base64_decode[^;]*;/<?php\n/g' grep-lr--include=*.php“eval(base64_decode)”/>>1.lo

如果生成1.log文件但不修改包含PHP eval(..)的文件,则以下代码有问题。显示以下内容:
sed:无输入文件。

我错了吗

grep -lr --include=*.php "eval(base64_decode" ./ >> 1.log | xargs sed -i.bak 's/<?php eval(base64_decode[^;]*;/<?php\n/g'

grep-lr--include=*.php“eval(base64_decode)”/>>1.log | xargs sed-i.bak/您会收到错误消息,因为您的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.”/| xargs sed-i.bak的/如果要将输出保存在日志文件中并通过管道将其传输到
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'
grep-lr--include=*.php“eval(base64_解码)”|
T形三通-a 1.0|

xargs sed-i.bak’s/您正在将
grep
的输出重定向到一个文件,因此没有任何东西通过管道传输到
xargs
。它可以将输出保存到日志中,您只保留文件路径,您好!谢谢酒吧招待员,但我看到了:(
命令“tee”在“/usr/bin/tee”中可用"tee:command not found命令“xargs”在“/usr/bin/xargs”中可用xargs:command not found
我以前从未见过该错误消息。您应该在
$PATH
中有
/usr/bin
。我之所以放反斜杠,是因为我将命令拆分为多行。如果将它们放在一行上,请将其删除。Th非常感谢你,伙计,这就是你想要的,你是一名警察警察!好吧,如果这行得通的话,但是寻找一个单一的命令,非常感谢你的支持!
grep -lr --include=*.php "eval(base64_decode" ./ |
    tee -a 1.log |
    xargs sed -i.bak 's/<?php eval(base64_decode[^;]*;/<?php\n/g'