【发布时间】:2019-10-29 22:09:51
【问题描述】:
我有一个脚本需要使用一个正则表达式从两个不同的文本中过滤掉 html 标签。我需要一个正则表达式的原因是传递给脚本的数据可能是任何一种文本格式。除了一些差异之外,文本通常具有相同的语法
这是我的脚本:
#!/bin/bash
text1="<CENTER><B>Jupiter: The Great Yellow Spot<BR>"
text2="<b> Curiosity Rover Finds a Clay Cache on Mars </b> <br> "
regex="s|.*<b>\(.*\)<b.*|\1|I"
some_text1=$(echo $text1 | sed $regex)
some_text2=$(echo $text2 | sed $regex)
echo $some_text1
echo $some_text2
该代码非常适合 text1,但在 text2 中留下了 </b>。
输出:
Jupiter: The Great Yellow Spot
Curiosity Rover Finds a Clay Cache on Mars </b>
如何确保它删除所有 html 标签?
【问题讨论】:
-
Using regular expressions to parse HTML: why not?。
sed $regex非常不安全,记得引用你的变量。