sedを使用してXMLファイル内の文字列を特殊文字に置き換えます

rolinrok

grepを使用して同じ文字列を見つけるのに問題がないにもかかわらず、XMLファイル内のテキストの文字列をsedで置き換えるのに問題があります。置き換えられる新しい文字列と古い文字列には多くの特殊文字が含まれているため、多数の円記号を使用するのではなく、変数に格納するのが最善だと思いました。

OLD_STRING='<property name="webServiceHost">${jboss.bind.address}</property>'
NEW_STRING='<!--<property name="webServiceHost">${jboss.bind.address}</property>-->'

文字列は期待どおりに保存されているようです。

$ echo $OLD_STRING; echo $NEW_STRING
<property name="webServiceHost">${jboss.bind.address}</property>
<!--<property name="webServiceHost">${jboss.bind.address}</property>-->

Grepを実行すると、古い文字列がXMLファイルに存在することが確認されます。

$ grep "$OLD_STRING" jboss-beans.xml
<property name="webServiceHost">${jboss.bind.address}</property>

ただし、次のsedコマンドは何も出力しません。

sed -i 's/"$OLD_STRING"/"$NEW_STRING"/g' jboss-beans.xml

私がここで何を見逃しているのか分かりますか?

ラジッシュ

シェル変数を一重引用符で囲むと、その解釈が無効になります。そのため、コマンドは効果がありません。

$ echo  's/"$OLD_STRING"/"$NEW_STRING"/g'
s/"$OLD_STRING"/"$NEW_STRING"/g

次のように書く必要があります。

sed -i "s/'$OLD_STRING'/'$NEW_STRING'/g" jboss-beans.xml

ただし、変数は呼び出す前に解釈sedされ、再び特殊文字が含まれます。

$ echo  "s/'$OLD_STRING'/'$NEW_STRING'/g"
s/'<property name="webServiceHost">${jboss.bind.address}</property>'/'<!--<property name="webServiceHost">${jboss.bind.address}</property>-->'/g

そのためsed、この特別な機能s///によりコマンド区切り文字を使用するだけで定義できます。例:

sed -i "s#'$OLD_STRING'#'$NEW_STRING'#g" jboss-beans.xml

それでも、検索式には特別な正規表現文字が含まれており、sedこのように使用することはその能力の無駄です。私は次のような式を書きます:

sed -i 's/\(<.*webServiceHost.*jboss.bind.address.*>\)/<!--\1-->/' jboss-beans.xml

もちろん、必要に応じて一致文字列を多かれ少なかれ具体的にすることができます。役立つ他の素晴らしい機能もあります。sed特定のパターンに一致する行に編集操作を絞り込むことができます。コマンドは次のようになります。

sed -i '/webServiceHost/ s/^\(.*\)$/<!--\1-->/' jboss-beans.xml

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

バッチファイルを使用して、文字列を検索し、特殊文字に置き換えます

分類Dev

ファイル内の特殊文字内の小数を置き換えます

分類Dev

文字列内の文字を特殊文字に置き換えます

分類Dev

sed文字列を数字の特殊文字に置き換えます

分類Dev

Ubuntuでsedを使用して、文字列を特殊文字の値に置き換えます

分類Dev

ファイル内のすべての改行文字をgroovyの特殊文字「#」に置き換える

分類Dev

Javaで正規表現を使用して、文字列内の特殊文字}}を ""に置き換えます

分類Dev

sedを使用して、ファイル内のforループ内の文字列のn番目のオカレンスを別の文字列に置き換えます

分類Dev

sedを使用して、ファイル内のforループ内の文字列のn番目のオカレンスを別の文字列に置き換えます

分類Dev

バッチファイルの特殊文字を%に置き換えます

分類Dev

PowerShellを使用してテキストファイル内の特殊文字を置き換える

分類Dev

groovyを使用してファイル内の文字列を置き換えます

分類Dev

sedを使用して複数の特殊文字を置き換えます

分類Dev

ファイル内の特殊文字をUnicodeコード(Python)に置き換えます

分類Dev

ファイル内の文字列をSEDに置き換えます

分類Dev

XSLTを使用してXMLファイル内の文字列を置き換えます

分類Dev

sedを使用して文字列をファイルの内容に置き換えます

分類Dev

特定の文字列をgrepし、ファイルをsedに置き換えます

分類Dev

txtファイルと特殊文字の空白を置き換えます

分類Dev

bashスクリプトを使用して、ファイル内の文字列を変数に置き換えます

分類Dev

sedを使用して、縮小されたjsファイル内の2つの既知の文字列の間の未知の文字列を置き換えます

分類Dev

ファイル内の文字列を見つけてsedで効率的に置き換えます

分類Dev

sedコマンドを使用して特殊文字「/」を置き換えます

分類Dev

sedは文字列を特殊文字に置き換えません

分類Dev

sedを使用して特殊文字を含む文字列を置き換える

分類Dev

正規表現を使用してcshtmlファイルのtextareafor()の特殊文字を置き換える方法は?

分類Dev

findとsedを使用して、複数のファイルの文字列を置き換えます

分類Dev

sedコマンド-ファイル内の文字列を置き換えます

分類Dev

Sedを使用して文字列をファイルに置き換える

Related 関連記事

  1. 1

    バッチファイルを使用して、文字列を検索し、特殊文字に置き換えます

  2. 2

    ファイル内の特殊文字内の小数を置き換えます

  3. 3

    文字列内の文字を特殊文字に置き換えます

  4. 4

    sed文字列を数字の特殊文字に置き換えます

  5. 5

    Ubuntuでsedを使用して、文字列を特殊文字の値に置き換えます

  6. 6

    ファイル内のすべての改行文字をgroovyの特殊文字「#」に置き換える

  7. 7

    Javaで正規表現を使用して、文字列内の特殊文字}}を ""に置き換えます

  8. 8

    sedを使用して、ファイル内のforループ内の文字列のn番目のオカレンスを別の文字列に置き換えます

  9. 9

    sedを使用して、ファイル内のforループ内の文字列のn番目のオカレンスを別の文字列に置き換えます

  10. 10

    バッチファイルの特殊文字を%に置き換えます

  11. 11

    PowerShellを使用してテキストファイル内の特殊文字を置き換える

  12. 12

    groovyを使用してファイル内の文字列を置き換えます

  13. 13

    sedを使用して複数の特殊文字を置き換えます

  14. 14

    ファイル内の特殊文字をUnicodeコード(Python)に置き換えます

  15. 15

    ファイル内の文字列をSEDに置き換えます

  16. 16

    XSLTを使用してXMLファイル内の文字列を置き換えます

  17. 17

    sedを使用して文字列をファイルの内容に置き換えます

  18. 18

    特定の文字列をgrepし、ファイルをsedに置き換えます

  19. 19

    txtファイルと特殊文字の空白を置き換えます

  20. 20

    bashスクリプトを使用して、ファイル内の文字列を変数に置き換えます

  21. 21

    sedを使用して、縮小されたjsファイル内の2つの既知の文字列の間の未知の文字列を置き換えます

  22. 22

    ファイル内の文字列を見つけてsedで効率的に置き換えます

  23. 23

    sedコマンドを使用して特殊文字「/」を置き換えます

  24. 24

    sedは文字列を特殊文字に置き換えません

  25. 25

    sedを使用して特殊文字を含む文字列を置き換える

  26. 26

    正規表現を使用してcshtmlファイルのtextareafor()の特殊文字を置き換える方法は?

  27. 27

    findとsedを使用して、複数のファイルの文字列を置き換えます

  28. 28

    sedコマンド-ファイル内の文字列を置き換えます

  29. 29

    Sedを使用して文字列をファイルに置き換える

ホットタグ

アーカイブ