有誰知道如何用Phing在文件中查找和替換文本?用Phing查找替換文件中的文本
回答
最簡單的方式實現這一目標用「傳統」的工具是sed
:
sed -i 's/old/new/g' myfile.txt
而如果是基於Ant那麼這應該幫助:http://ant.apache.org/manual/Tasks/replace.html
最簡單的形式是<replace file="myfile.html" token="OLD" value="NEW"/>
。
如果你真的需要它,你可以運行的外部工具與螞蟻作爲http://ant.apache.org/manual/Tasks/exec.html解釋說,這意味着,除其他事項外,你可以打電話從螞蟻的sed的東西,如:
<exec executable="sed">
<arg value="s/old/new/g" />
<arg value="$MY_FILE" />
</exec>
您可以替換文本內部文件使用過濾器。過濾器用於其他文件操作任務,例如複製。
我相信過濾器背後的主要思想是您可以使用標記而不是實際值創建模板文件,然後將標記替換爲複製過程的一部分。
快速示例:將數據庫配置模板文件存儲在模板目錄中。然後,你把它複製到使用目標配置文件:
<copy file="templates/database.config.php.tpl" tofile="config/database.config.php" overwrite="true">
<filterchain>
<replacetokens begintoken="%%" endtoken="%%">
<!-- MySQL TOKENS -->
<token key="dbname" value="${db.mysql.dbname}" />
<token key="dbhost" value="${db.mysql.host}" />
<token key="dbport" value="${db.mysql.port}" />
<token key="dbuser" value="${db.mysql.username}" />
<token key="dbpassword" value="${db.mysql.password}" />
</replacetokens>
</filterchain>
</copy>
有很多可用的其他濾光器(例如正則表達式搜索和替換)的。 查看更多有關過濾器的文檔中:http://phing.info/docs/guide/stable/chapters/appendixes/AppendixD2-CoreFilters.html
這應該是答案。 – 2015-01-02 08:49:52
我一直在尋找同樣的事情,而且我發現,存在一個名爲ExpandProperties過濾器,它允許以取代在複製文件的屬性。比如我用它在Apache虛擬主機模板:
<target name="apache-config" description="Generates apache configuration">
<!-- Default value for Debian/Ubuntu -->
<property name="apache.vhost.dir" value="/etc/apache2/sites-available" override="false"/>
<copy file="${application.startdir}/docs/vhost.conf.tpl" todir="${apache.vhost.dir}" overwrite="true">
<filterchain>
<expandproperties/>
</filterchain>
</copy>
<echo message="Apache virtual host configuration copied, reload apache to activate it"/>
</target>
而且在模板文件
<VirtualHost *:80>
DocumentRoot "${application.startdir}/public"
ServerName ${apache.default.host}
<Directory "${application.startdir}/public">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
這樣你不明確的列出所有需要更換的令牌,漂亮有用...
我用你的過濾器鏈,但與上面的人的反身任務。 – thescientist 2014-03-10 01:50:21
如果你不想複製文件和文件只需更換在你的文件駐留在當前文件夾的字符串,做一個reflexive task:
<reflexive>
<fileset dir=".">
<include pattern="*.js" />
</fileset>
<filterchain>
<replaceregexp>
<regexp pattern="SEARCH" replace="REPLACEMENT"/>
</replaceregexp>
</filterchain>
</reflexive>
謝謝!這個答案確實是最好的選擇,儘管其他人在這一點上有更多的選票。這個任務應該如何完成,而不需要不必要的複製,並且在原生phing任務可用時使用exec任務。 – AlexG 2013-12-20 18:26:06
我用這對我phing build.xml文件
<exec command="find ./ -type f -name '*.php' | xargs sed -i 's|x--Jversion--x|${jversion}|g'" dir="${targetdir}/_package/${extname}.${package.version}" />
Acme公司給出的答案,是正確的。 如果您嘗試將文件複製到自身以修改它,大聲說出喲不能自我複製。
<reflexive file="./app/config/config.yml" tofile="./app/config/config.yml">
<filterchain>
<replacetokens begintoken="__" endtoken="__">
<token key="BUILD_VERSION" value="Replace Value" />
</replacetokens>
</filterchain>
</reflexive>
這對我很好。
- 1. 查找並替換文件夾中的多個文本文件
- 2. 查找和替換文本
- 3. 用文本文件中的查找字替換
- 4. 使用命令查找並替換文件中的文本
- 5. 查找並替換文本等文字
- 6. 查找並替換文本文件輸出中的單詞
- 7. 查找並替換多個文件中的文本
- 8. 如何查找和替換文本文件中的一行?
- 9. 在excel中查找並替換文本
- 10. 在WebPage中查找/替換文本Asp.Net
- 11. 在python中查找並替換文本
- 12. 使用Visual Basic查找並替換txt文檔中的文本
- 13. Java的查找和替換文本
- 14. VB腳本查找和替換Word文檔中的文本
- 15. 在大文件中查找並替換
- 16. tcl在文件中查找並替換
- 17. 在C文件中查找並替換
- 18. 在文件名中查找並替換
- 19. 批處理命令查找/替換文件內的文本
- 20. 使用JREPL.BAT查找並替換文件中的文本使用JREPL.BAT
- 21. (jQuery)查找並替換特定文本
- 22. PHPStorm - 查找和選擇替換文本?
- 23. SQL查找並替換文本
- 24. Android/Java - 查找文本並替換WebViewClient
- 25. 原型查找類並替換文本
- 26. 如何使用Objective C查找和替換文件中的文本?
- 27. 使用Scanner和Printwriter類查找和替換文本文件中的單詞
- 28. 如何使用vim editor在終端的文件中查找和替換文本
- 29. 蟒蛇:查找和替換編號<1文本文件
- 30. 崇高文本3查找並替換多個文件
PHING是一個基於Apache Ant的PHP項目構建系統或構建工具。你可以用它做任何事情,你可以用像GNU make這樣的傳統構建系統來做什麼,它使用簡單的XML構建文件和可擴展的PHP「任務」類使它成爲一個易於使用和高度靈活的構建框架。 – milan 2011-02-05 16:41:41
http:// phing。info/ – milan 2011-02-05 16:42:41
我試過替換標籤,但得到`不能創建任務/類型:'替換'。確保已經使用taskdef/typedef聲明瞭此類。 – 2016-03-15 08:11:11