我在html标签之间有文字。例如:
<td>vip</td>
我会在代码<td></td>
之间添加任何文字
如何从这些标签中剪切任何文本并在这些标签之间放置任何文本。
我需要通过bash / shell来做。
我怎样才能做到这一点 ?
首先,我试图得到这个文本,但没有成功
sed -n "/<td>/,/<\/td>/p" test.txt
。但结果我有
<td>vip</td>
。但根据文件,我应该只得到vip
答案 0 :(得分:3)
您可以使用它来获取值vip
sed -e 's,.*<td>\([^<]*\)</td>.*,\1,g'
答案 1 :(得分:2)
你可以试试这个:
sed -i -e 's/\(<td>\).*\(<\/td>\)/<td>TEXT_TO_REPLACE_BY<\/td>/g' test.txt
请注意,它仅适用于<td>
代码。它将替换标记<td>
之间的所有内容(实际上将它们放在一起并将标记放回)与TEXT_TO_REPLACE_BY
。
答案 2 :(得分:0)
如果您的Input_file与显示的示例相同,那么以下内容也可以为您提供帮助。
echo "<td>vip</td>" | awk -F"[><]" '{print $3}'
只需使用echo打印标签,然后使用awk创建字段分隔符&gt;&lt;然后打印第3个字段,然后是您的请求。
答案 3 :(得分:0)
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>