在下一行使用sed替换

时间:2013-01-18 01:52:53

标签: sed

我正在使用sed命令将一些文本翻译成另一个文本。

cat text

           <strong>ABC
           </strong>

Commnad:

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

预期结果:\ textbf {ABC}

但是使用上面的脚本我无法将其转换为预期的输出,因为标签之间有新的行。如何处理此类案件?

2 个答案:

答案 0 :(得分:1)

sed -e 'N;s|<strong>\(.*\?\)\n</strong>|\/textbf{\1}|g'
如CodeGnome和David Ravetti所说,N标志允许多行模式。

答案 1 :(得分: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