我有一些html文本,我需要修复URL文本。我需要:

1)将URL中的文本转换为小写 还 2)将任何空格转换为URL内的连字符 还 3)从URL删除任何括号

我在每个文件中都有多个此模式的发生:

<div class="classname"><a href="/URL"><img src="${asset.image/url}" alt="TEXT" class="another-class-name" ></a></div>

示例:
我想改变这个模式:<div class="classname"><a href="/URL-EXAMPLE-ONE"><img src="${asset.image/url}" alt="TEXT" class="another-class-name" ></a></div>

to:<div class="classname"><a href="/url-example-one)"><img src="${asset.image/url}" alt="TEXT" class="another-class-name" ></a></div>

我有很多文件,想要做一个infile替换。 /URL-EXAMPLE-ONE也可以具有空间,括号的任何组合。

从先前的建议我使用以下sed脚本:

/sw/bin/sed -e '/<div class="mk-man-logo-mod5-m"><a href="\/[A-Z -{}&]*"></ {
   h;
   s/.*<div class="mk-man-logo-mod5-m"><a href="\/\(.*\)"><img.*/\1/;
   s/\(.*\)/\L\1/;
   s/[ &]/-/g;
   s/[()]//g;
   s/<img.*//;
   x;
   s/\(.*<div class="mk-man-logo-mod5-m"><a href="\/\)\(.*\)\(<img.*\)/\1\3/;
   G;
   s/\n//;
   }' $e
.

但我得到的输出是一个例子:

原始文本: <div class="classname"><a href="/ABC (D&E)"><img src="${asset.images/common/manufacturer_logos/medium/abb-m.gif}" alt="TEXT" class="another-classname" ></a></div>

转换文本: <div class="classname"><a href="/<img src="${asset.images/url}" alt="TEXT" class="another-classname" abc-d-ediv>

实际上需要: <div class="classname"><a href="/abc-d-e"><img src="${asset.images/url}" alt="TEXT" class="another-classname"></a></div>

任何人都可以帮助进一步帮助吗?我一直在燃烧很多时间;我不是SED专家,但觉得我在这里关闭但错过了一些东西。

非常感谢, Alex

有帮助吗?

解决方案

这似乎有效:

sed '
\#<div class="mk-man-logo-mod5-m"><a href="/[A-Z &()-]\+"# {
  h
  s#<div class="mk-man-logo-mod5-m"><a href="/[A-Z &()-]\+##
  x
  s#.*href="/\(.*\)"><img src.*#\1#
  s#.*#\L&#
  s#[ &]#-#g
  s#[()]##g
  s#^#<div class="mk-man-logo-mod5-m"><a href="/#
  G
  s#\n##
}'
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top