1

膨大な数のhtmlファイルがあります。すべての , と " をそれぞれ html エンティティ &nsbquo と &quto に置き換える必要があります。これには 2 つのステップで成功する必要があります: 1) 間のすべてのテキストを検索します。

タグ。このテキストの間だけを置き換える必要があります

タグ。2) sed を使用して必要なすべての文字列を置き換えます

これに対する私のコマンドは: xmlstarlet sel -t -v "*//p" "index.html" | sed 's/,/\&nsbquo/'

これは機能しますが、変更を index.html ファイルに戻す方法がわかりません。sed には -i オプションがありますが、そのためには sed コマンドでファイル名を指定する必要があります。しかし、私の場合は | を使用する必要があります。html ファイルから必要な文字列を除外します。

助けてください。私は2日間からこれをたくさん検索しましたが、運がありませんでした.

ありがとう、ディビア。

4

1 に答える 1

2

ここでの主な問題は、XMLでは"との間に違いがないことです。および"なので、xmlstarletを使用してこれを直接行うことはできません。"を特別な文字列に置き換えてから、sedを使用して"に置き換えることができます。

xmlstarlet ed -u "//p/text()" \
    -x "str:replace(str:replace(., ',', '@NSBQUO@'), '\"', '@QUOT@')" \
    quote.html | \
  sed 's/@NSBQUO@/\&nsbquo\;/g; s/@QUOT@/\&quot\;/g' > quote-new.html
mv quote-new.html quote.html

注:str:replaceおよびその他のexslt関数は、バージョン1.3.0でのみxmlstarlet edに追加されたため、この質問が行われた時点では使用できませんでした。

于 2011-10-08T15:04:09.600 に答える