2

次のようなテキストがあります。

i18n_en_it_IT.xml:<li>risalire all&\#39;autore.</li>

そして、このように(最初のものではエスケープされたポンド記号に注意してください。2番目のものではありません)

i18n_en_it_IT.xml:<li>risalire all&#39;autore.</li>

sed式を実行して置き換えると

&\#39; 
&#39;

斜めのアポストロフィ (d\u2019) を使用すると、最初のケース (エスケープあり) では機能しますが、2 番目のケースでは機能しません。その理由がわかりません。ここでわかる唯一の違いは、2 番目のものから二重エスケープを削除したことですが、何らかの理由で all'autore と一致せず、alld\u2019autore に置き換えられませんか?

 s/\([A-Za-z]\+\)&\\#39;\([A-Za-z]\+\)/\1\\u2019\2/g
 s/\([A-Za-z]\+\)&#39;\([A-Za-z]\+\)/\1\\u2019\2/g
4

1 に答える 1

0

sed -rマスキングを簡素化する を使用すると、 in の後に , を付ければ両方の式を変更し\\&\\#39;?オプションとしてマークすることができます。

cat pounds.xml | sed -r 's/([A-Za-z]+)&\\?#39;([A-Za-z]+)/\1\\u2019\2/g'
于 2012-04-17T03:02:51.910 に答える