将大写转换为小写以及将空格修改为使用sed文件中的文本
-
21-12-2019 - |
题
我有一些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##
}'
.