Bash 如何替换html标记之间的任何文本

Bash 如何替换html标记之间的任何文本,bash,shell,sed,replace,grep,Bash,Shell,Sed,Replace,Grep,我在html标记之间有文本。例如: <td>vip</td> vip 我将在标签之间显示任何文本 如何从这些标记中剪切任何文本并将任何文本放在这些标记之间。 我需要通过bash/shell来实现。 我该怎么做? 首先,我试图得到这篇文章,但没有成功 sed-n/,//p“test.txt。但结果是我 vip。但是根据文档,我应该只获得vip您可以使用它来获取值vip sed -e 's,.*<td>\([^<]*\)</td>.*,\1,

我在html标记之间有文本。例如:

<td>vip</td>
vip
我将在标签之间显示任何文本
如何从这些标记中剪切任何文本并将任何文本放在这些标记之间。 我需要通过bash/shell来实现。 我该怎么做? 首先,我试图得到这篇文章,但没有成功
sed-n/,//p“test.txt
。但结果是我
vip
。但是根据文档,我应该只获得
vip

您可以使用它来获取值
vip

sed -e 's,.*<td>\([^<]*\)</td>.*,\1,g'

sed-e的,.*\([^您可以使用它来获取值
vip

sed -e 's,.*<td>\([^<]*\)</td>.*,\1,g'

sed-e的,.*\([^如果您输入的_文件与所示示例相同,则以下内容也可能对您有所帮助

echo "<td>vip</td>" | awk -F"[><]" '{print $3}'

echo“vip”| awk-F”[>如果您输入的文件与所示示例相同,则以下内容也可能对您有所帮助

echo "<td>vip</td>" | awk -F"[><]" '{print $3}'
echo“vip”| awk-F”[>您可以尝试以下方法:

sed -i -e 's/\(<td>\).*\(<\/td>\)/<td>TEXT_TO_REPLACE_BY<\/td>/g' test.txt
sed-i-e的/\(\).\(\)/TEXT\u TO\u替换为/g'test.txt
请注意,它仅适用于
标记。它将用
文本替换标记之间的所有内容
(实际上是将它们放在一起,然后将标记放回原处)。您可以尝试以下操作:

sed -i -e 's/\(<td>\).*\(<\/td>\)/<td>TEXT_TO_REPLACE_BY<\/td>/g' test.txt
d=$'<td>vip</td>\n<table>vip</table>\n<td>more data here</td>'
echo "$d"
<td>vip</td>
<table>vip</table>
<td>more data here</td> 

awk '/<td>/{match($0,/(<.*>)(.*)(<\/.*>)/,t);print t[1] "something" t[3];next}1' <<<"$d"
<td>something</td>
<table>vip</table>
<td>something</td>

awk '/<table>/{match($0,/(<.*>)(.*)(<\/.*>)/,t);print t[1] "something" t[3];next}1' <<<"$d"
<td>vip</td>
<table>something</table>
<td>more data here</td>
sed-i-e的/\(\).\(\)/TEXT\u TO\u替换为/g'test.txt
请注意,它只适用于
标记。它将用
文本替换标记之间的所有内容
(实际上是将它们放在一起并将标记放回原处),以替换为
d=$'<td>vip</td>\n<table>vip</table>\n<td>more data here</td>'
echo "$d"
<td>vip</td>
<table>vip</table>
<td>more data here</td> 

awk '/<td>/{match($0,/(<.*>)(.*)(<\/.*>)/,t);print t[1] "something" t[3];next}1' <<<"$d"
<td>something</td>
<table>vip</table>
<td>something</td>

awk '/<table>/{match($0,/(<.*>)(.*)(<\/.*>)/,t);print t[1] "something" t[3];next}1' <<<"$d"
<td>vip</td>
<table>something</table>
<td>more data here</td>
回音“$d” 贵宾 贵宾 这里有更多数据 awk'/{match($0,/()(.*)()/,t);打印t[1]“something”t[3];next}1'
d=$'vip\nvip\n此处有更多数据'
回音“$d”
贵宾
贵宾
这里有更多数据

awk'//{match($0,/()(.*)()/,t);print t t[1]“something”t[3];next}1'首先,我尝试获取此文本,但没有成功
sed-n//,p“test.txt
。结果是我得到了
vip
。但是根据文档,我应该只得到
vip
。你应该使用html解析器,而不是正则表达式。你的sed尝试失败了,因为它是一个行工具,因此会打印出满足你标准的整行。首先,你能保证
标记是打开的吗同一行?显示更多上下文,应该有父
标记首先,我尝试获取此文本,但没有成功
sed-n//,p“test.txt
。结果是我得到了
vip
。但是根据文档,我应该只得到
vip
。你应该使用html解析器,而不是正则表达式。你的sed尝试失败了,因为它是一个行工具,因此会打印出满足你标准的整行。首先,你能保证
标记是打开的吗同一行?显示更多上下文,应该有父项
标记如果标记不在同一行上,您将如何更改此项?如果标记不在同一行上,您将如何更改此项?