Files

用文件內容替換文件中的行

  • December 20, 2012

我有幾個包含一些 PHPinclude的文件,我想用文件內容替換它們。該文件看起來像

foo
<?php
include("file1.php");
?>
bar
baz
<?php
include("file2.php");
include("file3.php");
?>
more content

所以 afterfoo應該是 file1.php 的內容,afterbaz應該是 file2.php 的第一個內容,然後是 file3.php。在這兩種情況下,我還想刪除<?phpand?>標籤。解決這個問題的好方法是什麼?

假設以下文件內容:

  1. file1.php: 是空的
  2. file2.php:<p>Hello
  3. file3.php:World</p>

所以生成的文件應該如下所示:

foo
bar
baz
<p>Hello
World</p>
more content

單詞foobar只是真實文件中的髒話,可能有任何文本。

無論如何,這些都是 PHP 替換,所以只需通過 php 執行它:

$ php file-main.php 
foo
bar
baz
<p>Hello
World</p>
more content


$ php file-main.php > file-main-new.php
k=1
while read line
do


       if [[ "${line}" == "<?php" ]] || [[ "${line}" == "?>" ]]; then
       :
       elif [[ "${line}" =~ "include" ]]; then
       ((k++))
       file=$line
               while read include_line
               do
               echo $include_line  | grep -Ev '<\?php|\?>' >> newfile.php
               done <${file:9:9}
      # cat file$k.php >> newfile.php
       else
       echo $line >> newfile.php
       fi

done </tmp/inputfile

引用自:https://unix.stackexchange.com/questions/58861