0

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

猫文字

           <strong>ABC
           </strong>

通讯:

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

预期结果:\textbf{ABC}

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

4

2 回答 2

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

正如 CodeGnome 和 David Ravetti 所说,N 标志允许多行模式。

于 2013-01-18T02:16:01.427 回答
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 回答