【问题标题】:Converting uppercase to lowercase as well as modifying spaces to text in a file using SED使用 SED 将文件中的大写转换为小写以及将空格修改为文本
【发布时间】:2014-07-24 11:26:50
【问题描述】:

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

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>

收件人:<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

但我得到的输出是,例如:

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

转换后的文字: &lt;div class="classname"&gt;&lt;a href="/&lt;img src="${asset.images/url}" alt="TEXT" class="another-classname" abc-d-ediv&gt;

其实想要: &lt;div class="classname"&gt;&lt;a href="/abc-d-e"&gt;&lt;img src="${asset.images/url}" alt="TEXT" class="another-classname"&gt;&lt;/a&gt;&lt;/div&gt;

谁能提供进一步的帮助?我已经为此花费了很多时间;我不是 SED 专家,但我认为我离这里很近,但缺少一些东西。

提前非常感谢, 亚历克斯

【问题讨论】:

  • 您现在几乎是 sed 专家了。我可以看到您的ABC (D&amp;E) 正在消失并且没有被替换。那一定令人失望。暂时关闭所有其他东西并专注于它。此外,虽然与其他 sed 案例相比是一件小事,但对于在搜索目标中需要转义 / 字符的行,为什么不为 s/t/r/ 使用另一个字符,例如 # (所以s#t#r#) 来消除一个常见的错误来源。 (那么你不需要写s/.*...\/.../r/,但可以使用s#.*../..#r#。)。祝你好运。

标签: text replace sed string-substitution


【解决方案1】:

这似乎有效:

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##
}'

【讨论】:

    猜你喜欢
    • 2014-07-23
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2013-12-02
    • 2012-11-27
    • 2011-11-05
    相关资源
    最近更新 更多