仅从PHP文件中删除源代码

仅从PHP文件中删除源代码,php,grep,Php,Grep,是否有任何干净的grep-one-liner只对PHP文件中的PHP源代码(介于之间的代码)进行grep?到目前为止,我已经尝试: grep -oiE "<\?php[[:print:]]*\?>" name_of_php_file grep-oiE“php文件的名称” 但它似乎返回了混乱的条目,如: <?php print $row[0];?>"><img src="gallerybig/<?php echo $row[1];?> “>

是否有任何干净的grep-one-liner只对PHP文件中的PHP源代码(介于
之间的代码)进行grep?到目前为止,我已经尝试:

grep -oiE "<\?php[[:print:]]*\?>" name_of_php_file
grep-oiE“php文件的名称”
但它似乎返回了混乱的条目,如:

<?php print $row[0];?>"><img src="gallerybig/<?php echo $row[1];?>
“>
需要一个只返回PHP源代码的单行程序,没有任何混乱的条目。sed和awk都可以


编辑:预期的输出是PHP源代码,即使它跨越多行。示例输出不好,因为它中间包含HTML:
“>


编辑2:由@SigmaPiEpsilon给出的答案是有效的,但grep不会打印跨多行的代码。例如,此代码片段不会显示在输出中:

<?php 
$str="select c_id,c_description,cate_name,date from book_table ;";
$res=mysql_query($str); ?>

您必须使用非贪婪搜索,在
[[:print:][]*
之后添加一个
。这在普通grep中不可用,但在Perl语法中可以通过指定
-P
标志而不是
-E
来使用。检查
man grep
,确保您的grep支持此功能

$ Var='<?php print $row[0];?>"><img src="gallerybig/<?php echo $row[1];?>'
$ echo $Var | grep -oiP "<\?php[[:print:]]*?\?>"
<?php print $row[0];?>
<?php echo $row[1];?>

您可以使用GNU awk执行到目前为止描述的操作:

$ gawk -v RS='?>' 'RT{sub(/.*<\?/,"<?"); print $0 RT}' file
<?php
$str="select c_id,c_description,cate_name,date from book_table ;";
$res=mysql_query($str); ?>

$gawk-vrs='?>''RT{sub(/.*)您可以添加3-5个样本行并显式显示所需的输出吗?条目是否跨行分布?是否只需要匹配整行?等等…不确定为什么显示的行不应该是输出的一部分(我不知道php)。请参阅我最近对多行的编辑。
$ gawk -v RS='?>' 'RT{sub(/.*<\?/,"<?"); print $0 RT}' file
<?php
$str="select c_id,c_description,cate_name,date from book_table ;";
$res=mysql_query($str); ?>