0

あるテキストを別のテキストに翻訳するsedコマンドに取り組んでいます。

猫のテキスト

           <strong>ABC
           </strong>

Commnad:

           sed -e 's|<strong>(.*?)</strong>|//textbf{1}|g'

期待される結果:\ textbf {ABC}

しかし、上記のスクリプトを使用すると、タグ間に新しい行があるため、期待される出力に変換できません。そのような場合をどのように処理しますか?

4

2 に答える 2

1

これはあなたのために働くかもしれません(GNU sed):

sed -r '$!N;s|(<)(strong>)([^\n]*)\n\s*\1/\2|//textbf{\3}|;P;D' file

また

sed '$!N;s|\(<\)\(strong>\)\([^\n]*\)\n\s*\1/\2|//textbf{\3}|;P;D' file
于 2013-01-18T06:58:56.007 に答える
1
sed -e 'N;s|<strong>\(.*\?\)\n</strong>|\/textbf{\1}|g'

CodeGnomeとDavidRavettiが述べたように、Nフラグは複数行のパターンを可能にします。

于 2013-01-18T02:16:01.427 に答える