我正在使用sed命令将一些文本翻译成另一个文本。
cat text
<strong>ABC
</strong>
Commnad:
sed -e 's|<strong>(.*?)</strong>|//textbf{1}|g'
预期结果:\ textbf {ABC}
但是使用上面的脚本我无法将其转换为预期的输出,因为标签之间有新的行。如何处理此类案件?
答案 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