我正在使用 sed 命令将一些文本翻译成另一个文本。
猫文字
<strong>ABC
</strong>
通讯:
sed -e 's|<strong>(.*?)</strong>|//textbf{1}|g'
预期结果:\textbf{ABC}
但是使用上面的脚本我无法将其转换为预期的输出,因为标签之间有新行。如何处理此类情况?
我正在使用 sed 命令将一些文本翻译成另一个文本。
猫文字
<strong>ABC
</strong>
通讯:
sed -e 's|<strong>(.*?)</strong>|//textbf{1}|g'
预期结果:\textbf{ABC}
但是使用上面的脚本我无法将其转换为预期的输出,因为标签之间有新行。如何处理此类情况?
sed -e 'N;s|<strong>\(.*\?\)\n</strong>|\/textbf{\1}|g'
正如 CodeGnome 和 David Ravetti 所说,N 标志允许多行模式。
这可能对您有用(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