Sed替换内部子串的外部子串

时间:2018-01-31 17:30:44

标签: bash awk sed

我正在尝试替换位于开始字符串和结束字符串之间的内容,例如以下内容,其中粗体文本是要替换的内容。

beginningSubstring sometext endingSubstring

我想将此转换为其他内容,例如以下内容。

newString sometext newString

我如何使用单个sed(或awk)进行替换?

我的具体用例是我在网站上使用curl在Linux CLI上检索信息,我试图显示各种内容。我想让输出更具可读性/更短,并希望将<strong>someText</strong>*someText*<em>someText</em>替换为~someText~等HTML标记,以保持其存在性内容没有完全删除它。我想要一个sed进行替换,因为我希望将开始和结束标签配对在一起,这样我就不必确定是否存在先前替换的开始标签以便确定结束标记应该是什么。

1 个答案:

答案 0 :(得分:0)

sed

$ echo "<strong>someText</strong> <p>XXX</p>  <strong>someOtherText</strong>"
  sed -E 's_<strong>([^<]*)</strong>_*\1*_g' 

将给出

*someText* <p>XXX</p>  *someOtherText*

但是,不推荐您需要提供的html和特殊字符。也许你正在寻找降价转换器的HTML。