Sed/awk 正規表現: XML フィード

Sed/awk 正規表現: XML フィード

特定の正規表現を探していますが、3日間努力しましたが、正しい答えが見つかりませんでした。

XMLフィードの特定の部分を削除する必要があります。 sed、awkを使ってみましたが、うまくいきません。

私が持っているもの:

...Something before
<description><![CDATA[Des  chercheurs de l&#x27;université de Columbia à New York ont mis au point un nouveau moyen de cacher un message dans un texte sans en altérer le sens et sans dépendre d&#x27;un format de fichier particulier. Nommée FontCode, cette idée est <a href="https://korben.info/cacher-des-informations-dans-un-texte-grace-a-des-modifications-sur-les-caracteres.html">Passage a la news suivante</a>]]></description>
... Other news

私は必要です:

...Something before
<description><![CDATA[Des  chercheurs de l&#x27;université de Columbia à New York ont mis au point un nouveau moyen de cacher un message dans un texte sans en altérer le sens et sans dépendre d&#x27;un format de fichier particulier.<a href="https://korben.info/cacher-des-informations-dans-un-texte-grace-a-des-modifications-sur-les-caracteres.html">Passage a la news suivante</a>]]></description>
... Other news
  • 「<\description></description>の間で複数のインスタンスを選択してください。
  • 最後の不完全な文を削除します(hrefの前、「Nommée FontCode、cette idée est」)。

ご協力ありがとうございます! ;)

ベストアンサー1

sed -E '/^[[:blank:]]*<description><!\[CDATA\[/s/([!?.])[^!?.<]*<a/\1 <a/' file

<description><![CDATA[その後、正確な文字列(スペースまたはタブが先頭にある可能性がある)で始まるすべての行を見つけます。このラインでは交換が行われます。

置換は、文終端([!?.])の後に任意の数の文字が続くものと一致します。いいえ文の終端者または<、および文字列<a。これは、最初の文の終端者であるスペースと文字列に置き換えられます<a

おすすめ記事