【发布时间】:2016-04-12 06:45:10
【问题描述】:
我正在使用 shell 脚本对 cablemodem 的 HTML 诊断页面源代码进行网络抓取,我需要修复一些由摩托罗拉完成的编码错误。在许多页面中,有少数情况在输入标签末尾缺少结束 >,这会破坏事物。由于</td> 前面的值是动态的,我需要能够动态修复标签。
示例字符串:
<td bgcolor=#E7DAAC width=138 colspan=2><input type="text" name="NumberOfCpes" size="3" maxlength="3" value=253 </td>
value=253 </td>看看结局如何
如何在整个页面中的每次出现都用“>”替换该空格?请记住,在这些页面中还有其他地方 </td> 前面有一个空格,因此 sed 's/ <\/td>/><\/td>/g' 将无法正常工作。
感谢您的帮助
【问题讨论】:
-
你需要支持
<td name="<ugly_with_brace_in_name">这样的东西吗?如果没有,您可以执行s/<(.*)</<\1/></g之类的操作,即两个打开<'s =</>< -
@TomaszLewowski 它应该是
s/<([^<*])</<\1></g,因为*匹配贪婪。 -
@hek2mgl 感谢您的更正
-
@hek2mgl @TomaszLewowski 猫 temp.html | sed 's/' sed: -e expression #1, char 19: invalid reference \1 on `s' 命令的 RHS 我错过了什么吗?跨度>
-
@vizi0n 您需要使用
sed -r ...或转义括号。还要检查我的答案。
标签: string shell parsing awk sed