1

ページ番号を削除する必要がある場所に、次のテキストがあります。

<p class="p3">El gabinete se iba iluminando lentamente ... Por delante de las</p>
<p class="p5"><span class="s4"><i>32</i></span> grandes nubes de un color violeta obscuro...</p>
<p class="p3">

削除する必要があります

</p>
<p class="p5"><span class="s4"><i>32</i></span>

それから。

これまでのところ、私はこれを持っています

sed -E -i '' 's/</p>\n<p class="p[0-9]+"[^>]*><span class=".+">.+<\/span> / /g' Capítulo1.html

しかし、それは機能しません。</p>\nパーツがなくても機能しますが、キャプチャして置き換える必要があり</p>ます。

これはMac上であり、sedはLinuxとは少し異なるようです。また、段落クラスは、スパン クラス s の後に番号が続く場合と同様に、p で始まり、その後に番号が続くものにすることができます。イタリック体のタグは存在する場合も存在しない場合もあり、その間にページ番号があります。

4

2 に答える 2

0

改行が本当に重要でない限り、最初にそれらを取り除いてみることができます:

tr -d '\n' | sed ...
于 2013-03-29T10:57:07.713 に答える
0

段落の終了タグのスラッシュをエスケープし忘れた場合は、次のようにしてください。

's/<\/p>\r?\n<p class="p\d+"[^>]*><span class=".+">.+<\/span> / /g' Capítulo1.html

あなたが説明したより完全な一致については、これを試してください:

's/<\/p>\r?\n<p class="p\d+"[^>]*?><span class="s\d+">(<i>)?\d+(<\/i>)?<\/span>/ /g' Capítulo1.html

これにより、スパン クラスの一致がより具体的に絞り込まれ、非貪欲性が追加されて、スパンの開始タグと最も遠い一致するスパンの終了タグの間で膨大な量のデータが削除されたときに予期しない驚きが発生するのを防ぎます。

于 2013-03-29T11:05:54.367 に答える