我需要更换每一个" _"用" - "在html文件中但仅在标签中,仅在" name"属性。
所以每一个:
<a name="menu_portlet_test"> or <a name="whatever_is_here">
应该成为这个:
<a name="menu-portlet-test"> and <a name="whatever-is-here">
无法弄清楚如何强制使用像sed / awk这样的东西。救命啊!
答案 0 :(得分:2)
sed ':a
s/\(<[^>]* name="[^"]*\)_\([^"]*"\)/\1-\2/g;ta' YourFile
你应该做大部分工作。由于顶级html的可能性不完美,但应该是99,9%好
<强>的解释强>
s//g
<
后跟任何非>
([^>] ) followed by
名称=&#34; followed by (any non
&#34; (
[^&#34;] ) ) [ as group 1] followed by
[so first
between quote after name=] followed by ( any non
&#34; (
[^& #34;] * ) followed by
&#34;`)[作为第2组] -
,然后是第2组的内容g
在线路上发生任何事情。这个改变1 _每个名字=&#34;&#34;但在线的任何名称=。 <... name="bla_bla_bla"> ... <... name="other_bla_bla"> ...
更改为<... name="bla-bla_bla"> ... <... name="other-bla_bla"> ...
ta
s//
中发生了更改,则使用修改后的内容重做相同的操作(实际上它是标记为:a
的if / goto)答案 1 :(得分:1)
使用正确的HTML处理工具,例如xsh,Perl's XML::LibXML的包装器。以下命令可以保存在脚本中,也可以从其交互式环境中输入:
open :F html file.html ;
for //@name set . xsh:subst(., '_', '-', 'g') ;
save :b ;