Androidで「g」修飾子なしで「sed」を使用しますか?

Androidで「g」修飾子なしで「sed」を使用しますか?

ルート化されたNexus 10にStericsonビジボックスをインストールしました。

</verse-sub-section>ファイルの最初のインスタンスを次に置き換えたいと思います</section>

          <section>Psalm of David</verse-sub-section>
          <verse-sub-section>David Weeps</verse-sub-section>

sed -i 's#</verse-sub-section>#</section>#' file最後に修飾語を使用しなくても、すべてが置き換えられます</verse-sub-section></section>g

ビジーボックスのせいですか?それとも私の命令が間違っていますか?これを達成するには、何を使用する必要がありますか?

ビジボックスバージョン:1.23.1

ベストアンサー1

最初に一致するインスタンスまでファイルの一部に置き換えを制限するには、置換コマンドの前に次を追加します。範囲1,\#pattern#

busybox sed '1,\#</verse-sub-section># s#</verse-sub-section>#</section>#' file

\#コマンドにバックスラッシュエスケープが含まれていない限り、代替区切り記号の前にバックスラッシュエスケープを使用することに注意してくださいs

最初の行で一致する項目が発生すると、目的の動作は生成されません。 GNU sedはこのケースを処理するためのさまざまなフォーマットをサポートしています0,\#pattern#が、busybox sed(少なくとも私がテストできたバージョンBusyBox v1.22.1 (Ubuntu 1:1.22.0-8ubuntu1))はサポートしていないようです。それ。

おすすめ記事