sed を使用したハイフンの削除

sed を使用したハイフンの削除

一部の改ページにはハイフンを含む単純なXMLファイルがあります。入力はこれです

 ba bla bla hyphe-</page>
 <page>nated bla bla bla

出力は次のようにする必要があります

 bla bla bla</page>
 <page>hyphenated bla bla bla

私はsedコマンドについて知っていますが、Nハイフンが奇数行に表示されるか偶数行に表示されるかを制御できません。

上記のスケッチに従って、sedを使用してハイフンを削除できますか?別の方法があります(例:他のUNIXシェルコマンドを使用する、Python、Perlを使用)。

編集する。要求されたように、私の入力ファイルの実際の例は次のとおりです。

[...] and vapours, upon the comparison of the air-thermo-</page>
<page>meter with the mercurial thermometer, upon the elastic [...]

編集2:この例をランダムに選択しましたが、本当に迷惑な例です。この場合、希望の出力は次のようになります。

 [...] and vapours, upon the comparison of the</page>
<page>air-thermometer with the mercurial thermometer, upon the elastic [...]

つまり、単語区切り文字としてスペースを使用します。私にとって最大の問題は、生の改行文字にまたがるパターンを作成することです。はい、パターンは前のハイフンだけを削除する必要があります。</page>

ベストアンサー1

PerlのOneliner(terdonに感謝!):

perl -0 -pe 's/\s+(\S+)-(<\/page>\s+<page>)(\S+)/$2$1$3/g' filename

機能:正規表現に一致し、一致する部分を使用して単語を再構築します。

おすすめ記事