0

コンテンツのPHPファイルを処理したいのですが、<?php ...?>の間の部分にのみ関心があります。残りは削除して、新しいファイルに保存する必要があります。以下に、このページの複数行のsed検索のコードに基づいたコードの一部をすでに示しました。しかし、それはの最初の部分を与えるだけです。

start="<?php"
end="?>"
temp=$(sed -n '1h;1!H;${;g;s/.*'"$start"'//pI;d;}' <<< echo $filename)
output=$(sed -n '1h;1!H;${;g;s/'"$end"'.*//p;d;}' <<< "$temp")

誰かが解決策を持っていますか?awk、grepも大丈夫です。ありがとう

4

1 に答える 1

2

このワンライナーはあなたのために働くかもしれません:

 awk '/<?php/{f=1} /?>/&&f{print;f=0} f'  file

<?phpおよび?>を出力したくない場合:

 awk '/<?php/{f=1;next;} /?>/&&f{f=0} f' file

テスト:(出力が探しているものであることを願っています。新しいファイルに保存するには、出力を新しいファイルにリダイレクトできます)

kent$  cat test.txt 
<?php
all
text

here
should
be
saved

even if 

empty

lines

?>


foo

bar

should be removed

kent$  awk '/<?php/{f=1} /?>/&&f{print;f=0} f' test.txt                                                                                                                     
<?php
all
text

here
should
be
saved

even if 

empty

lines

?>
于 2012-12-19T01:03:16.090 に答える