无论如何,是否有将大写转换为小写以及使用SED修改文件中文本的空间的方法

亚历克斯2134

我有一些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>

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

我有许多文件,并且想要进行文件内替换。/URL-EXAMPLE-ONE可能有空格,括号中的任何组合也。

我现在使用以下建议:

/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脚本来执行所有的取代:

sed '/<div class="classname"><a href="\/.*">/ { h; s/<div class="classname"><a href="\///; s/\(.*\)/\L\1/; s/ /-/g; s/[()]//g; x; s/\(<div class="classname"><a href="\/\)\(.*\)/\1/; G; s/\n//}'

解释:

  • /<div class="classname"><a href="\/.*">/ 仅在模式匹配时执行命令。
  • h 将行的副本存储在保留空间中。
  • s/<div class="classname"><a href="\/// 删除网址以外的所有内容。
  • s/\(.*\)/\L\1/ 将网址转换为小写。
  • s/ /-/g 将空格转换为连字符。
  • s[()]//g 删除括号。
  • x 将保留空间与模式空间交换(现在再次在原始行上运行)
  • s/\(<div class="classname"><a href="\/\)\(.*)/\1/ 删除网址。
  • G 将保留空间附加到模式空间
  • s/\n//删除G命令引入的换行符

或者

如果您的数据始终与示例中的数据完全相同(即<div class="classname"><a href="/URL">),并且您不需要通用解决方案,则可以使用以下更简单的脚本:

sed '/<div class="classname"><a href="\/.*">/ { s/\(.*\)/\L\1/; s/ /-/3g; s/[()]//g }'

这将匹配模式,将所有内容都转换为小写,删除所有括号,并用连字符从第三个空格到行尾替换空格。

更新

为了响应更新的问题,这是一条新sed命令,该命令<img>最后考虑了附加标签。

sed '/<div class="classname"><a href="\/[A-Z -(){}&]*"><img.*<\/div>/ { # match pattern
  h; # hold copy of original string
  # replace original string with just url, converted to lowercase.
  s/\(<div class="classname"><a href="\/\)\([A-Z -(){}&]*\)\("><img.*<\/div>\)/\L\2/;
  s/[ &]/-/g; # convert spaces, ampersands to hypens.
  s/[(){}]//g; # remove parentheses, braces.
  G; # append original string after url. Looks like: "converted-url\n<div class="classname"..."
  s/\n//; # remove newline introduced by append G.
  # swap out URL in original string with converted url.
  s/\([a-z-]*\)\(<div class="classname"><a href="\/\)\([A-Z -(){}&]*\)\("><img.*<\/div>\)/\2\1\4/;
}'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

sed无法将大写转换为小写

来自分类Dev

无论如何,是否有(轻松)将常规LCD监视器转换为触摸屏监视器的方法?

来自分类Dev

如何使用Powershell将csv文件转换为小写或大写,以保持其结构?

来自分类Dev

无论如何,是否有将`options'转换成与`navigationOptions`一样的功能?

来自分类Dev

使用 cmd 或 vbsscript 将文本文件中的所有单词转换为大写

来自分类Dev

将所有文本从大写转换为小写,反之亦然?

来自分类Dev

CSS & jQuery - 将文本转换为“大写” - 使用 .val() 获取时为小写

来自分类Dev

无论如何要获得TextArea中文本的大小?

来自分类Dev

无论如何,有没有将字符串转换为C ++ / Qt中的结构中的字段?

来自分类Dev

如何将大写字母转换为小写?

来自分类Dev

我如何使用sed将具有storedVars的js文件转换为具有方法的ruby文件?

来自分类Dev

这里有 HTML/CSS 中的任何方法将大写和小写字母转换为大写吗?

来自分类Dev

无论如何,是否可以在过去24小时内修改文件而不会循环浏览目录中的所有文件

来自分类Dev

无论如何,是否有将JSON解组到地图中并在Golang中保留键顺序的方法?

来自分类Dev

无论如何将内部类@ Inject / @ Autowire转换为外部类?

来自分类Dev

无论如何,将String转换为可执行的c ++表达式?

来自分类Dev

无论如何,是否有条件格式查找文本和日期条件

来自分类Dev

无论如何,可以将此for循环转换为列表理解?

来自分类Dev

如何使用angular js在输入字段中键入文本时将文本转换为大写

来自分类Dev

Python将文本文件转换为全部大写

来自分类Dev

如何在Microsoft Word中将小写文本转换为大写文本?

来自分类Dev

如何在Ubuntu 16.04.2中将所有目录和子目录从大写转换为小写?

来自分类Dev

无论如何,在批处理文件中是否有用于用户输入的预设数据?

来自分类Dev

无论如何将变量传递给bc,是否有要执行的命令?

来自分类Dev

无论如何,是否有基于选择查询将数据插入表中的信息?

来自分类Dev

如何将列表中的特定文本转换为大写?

来自分类Dev

无论如何,是否有将我的Mac从APFS还原为HFS的方法?

来自分类Dev

无论如何,是否有必要根据日期修改Realm对象,而不必显式添加日期作为属性?

来自分类Dev

无论如何,是否有从url上传图像的信息?

Related 相关文章

  1. 1

    sed无法将大写转换为小写

  2. 2

    无论如何,是否有(轻松)将常规LCD监视器转换为触摸屏监视器的方法?

  3. 3

    如何使用Powershell将csv文件转换为小写或大写,以保持其结构?

  4. 4

    无论如何,是否有将`options'转换成与`navigationOptions`一样的功能?

  5. 5

    使用 cmd 或 vbsscript 将文本文件中的所有单词转换为大写

  6. 6

    将所有文本从大写转换为小写,反之亦然?

  7. 7

    CSS & jQuery - 将文本转换为“大写” - 使用 .val() 获取时为小写

  8. 8

    无论如何要获得TextArea中文本的大小?

  9. 9

    无论如何,有没有将字符串转换为C ++ / Qt中的结构中的字段?

  10. 10

    如何将大写字母转换为小写?

  11. 11

    我如何使用sed将具有storedVars的js文件转换为具有方法的ruby文件?

  12. 12

    这里有 HTML/CSS 中的任何方法将大写和小写字母转换为大写吗?

  13. 13

    无论如何,是否可以在过去24小时内修改文件而不会循环浏览目录中的所有文件

  14. 14

    无论如何,是否有将JSON解组到地图中并在Golang中保留键顺序的方法?

  15. 15

    无论如何将内部类@ Inject / @ Autowire转换为外部类?

  16. 16

    无论如何,将String转换为可执行的c ++表达式?

  17. 17

    无论如何,是否有条件格式查找文本和日期条件

  18. 18

    无论如何,可以将此for循环转换为列表理解?

  19. 19

    如何使用angular js在输入字段中键入文本时将文本转换为大写

  20. 20

    Python将文本文件转换为全部大写

  21. 21

    如何在Microsoft Word中将小写文本转换为大写文本?

  22. 22

    如何在Ubuntu 16.04.2中将所有目录和子目录从大写转换为小写?

  23. 23

    无论如何,在批处理文件中是否有用于用户输入的预设数据?

  24. 24

    无论如何将变量传递给bc,是否有要执行的命令?

  25. 25

    无论如何,是否有基于选择查询将数据插入表中的信息?

  26. 26

    如何将列表中的特定文本转换为大写?

  27. 27

    无论如何,是否有将我的Mac从APFS还原为HFS的方法?

  28. 28

    无论如何,是否有必要根据日期修改Realm对象,而不必显式添加日期作为属性?

  29. 29

    无论如何,是否有从url上传图像的信息?

热门标签

归档