Phingでファイル内のテキストを見つけて置き換える方法を知っている人はいますか?find 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"/>
だろう。
そして、あなたが本当にそれを必要とする場合は、のようなものでアリからsedを呼び出すことができ、他のものの間であることを意味し、http://ant.apache.org/manual/Tasks/exec.htmlで説明したように、あなたはアリで外部ツールを実行することができます:
<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
これが答えになるはずです。 –
同じことを探していましたが、コピーしたファイルのプロパティを置き換えることができる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
あなたはreflexive taskを行う、ファイルをコピーし、ちょうどあなたのファイルが存在する現在のフォルダ内の文字列を置換したくない場合は、次の
<reflexive>
<fileset dir=".">
<include pattern="*.js" />
</fileset>
<filterchain>
<replaceregexp>
<regexp pattern="SEARCH" replace="REPLACEMENT"/>
</replaceregexp>
</filterchain>
</reflexive>
は私の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}" />
x - Jversion - xはプレースホルダ$ {jversion}は新しいテキストです。 –
アクメによって与えられた答えにこれを使用し、正しいものです。 ファイルを変更するためにファイルを自分自身にコピーしようとすると、自己コピーできないことを伝えます。
<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. htmlファイル内のテキストをExcelのVBAに置き換える
- 4. JavaScript/jQuery - 入力テキスト内のテキストを置き換えます
- 5. ファイル内のテキストをPowerShellに置き換える
- 6. ファイル内のテキストをPythonに置き換える
- 7. td jquery内の条件でテキストを置き換えます
- 8. VBAは、類似のテキストを含む他の単語を置き換えずにテキストを置き換えます。
- 9. XamlPackageのテキストを置き換えます
- 10. Findとsed:ファイルを置き換える方法
- 11. Stream-Java 8を使用してファイル内のテキストを置き換えます。
- 12. C#.plist/XMLファイル内の特定のテキストを置き換えますか?
- 13. PHP文字列内のテキストを置き換えます。
- 14. AngularJS:foreachループ内のテキストを置き換えます。
- 15. テキスト内のタグを画像に置き換えます。
- 16. 文字列内のテキストを例外と置き換えます。
- 17. タグを内側のテキストに置き換えます
- 18. WPFリッチテキストボックス内のハイパーリンクにテキストを置き換えます
- 19. div内のテキストをjQueryに置き換えます。
- 20. php:コンテナ内のテキストをlinkに置き換えます。 preg_replace?
- 21. ファイルのパスをファイルの内容に置き換えます。
- 22. ファイル名をウィンドウ内のファイル内のファイル内容に置き換えます。
- 23. サードパーティiframeのテキストを別のJSファイルに置き換えます。
- 24. XMLテキストを置き換えます
- 25. テキストをアイコンに置き換えます
- 26. VBscriptテキストをファイル名の一部に置き換えます。
- 27. PHPファイルの短いスクリプトにテキストを置き換えます
- 28. python open()でファイル内の文字列を置き換えます。
- 29. ファイル内のパターンで文字列を置き換えます
- 30. 選択したテキストをpタグ内に置き換えます
PHing Apache AntをベースにしたPHPプロジェクトビルドシステムまたはビルドツールです。 GNU makeのような伝統的なビルドシステムでできることは何でもできるし、単純なXMLビルドファイルや拡張可能なPHPの "task"クラスを使うことで、使いやすく柔軟性の高いビルドフレームワークができます。 – milan
http:// phing。info/ – milan
私はreplaceタグを試しましたが、 'タスクを作成できませんでした/タイプ: 'replace'。このクラスがtaskdef/typedefを使って宣言されていることを確認してください。 ' –