【发布时间】:2020-02-18 19:51:33
【问题描述】:
我需要替换 HTML 文档中某些文件名(并且只有文件名)的特殊字符。我知道如何用tr 或sed 替换整个 文本中的特殊字符,我知道如何用sed(例如's,src="\([^"]*\)",src="newprefixtofilename_\1"')用另一个给定字符串替换文件名,但我不确定sed 能否以某种方式匹配我在\1 中得到的字符?
如果sed 无法做到这一点,我该怎么做? awk?可能可以隔离以src= 为前缀的" 分隔字符串,并仅在这些字符串上使用gsub。我可以假设src= 仅出现在标签中(因此没有“真正的”html 解析),并且每个文件行只有一个字符串匹配。
示例输入行:
<img src="spécial.png"> Spécial
<img src="piètre.png"> Some text including "piètre"
仅在文件名中将[éî] 替换为[ei] 的所需输出:
<img src="special.png"> Spécial
<img src="pietre.png"> Some text including "piètre"
【问题讨论】:
-
sed 和 awk 都不是为解析 HTML 而设计的。首先,找到合适的工具
-
你能举一个输入和期望输出的例子吗?
-
@oguzismail 感谢您的评论,但这是脚本中的 1 行,最好在 bash 中完成。
-
为什么不
sed 's,src="spécial.png",src="special.png",'? -
@KamilCuk 因为我有各种非常不同的文件名...