将 sed 与 echo 一起使用并从文件中读取

数学

我想使用 sed 从 html 文件中删除除文件名之外的目录路径。路径看起来像:

<a href="/dir1/dir2/file.mp3" other_tags_here </a>

在目录和文件名中带有空格 (%) 和其他字符。例如。

<a href="/1-%one%2026/two%20_three%four/1-%eight.mp3"

我只需要保持<a href="1-%eight.mp3" other_tags_here <a/>. 当我尝试

echo '<a href=/1-%one%2026/two%20_three%four/1-%eight.mp3' | sed 's|href="/.*/.*/|href="|g'

它工作正常。但是,当我从 html 文件中读取时

sed 's|href="/.*/.*/|href="|g' file.html

它删除之后的所有内容href=并仅返回href=我该如何纠正?

约翰1024

在 sed 中,正则表达式匹配最左边最长的匹配。这意味着.*/您的正则表达式中的 final 将与行上的 final 匹配/为了防止这种情况:

sed 's|href="/[^/]*/[^/]*/|href="|g' file.html

正则表达式[^/]*//匹配下一个

在像 python 或 perl 这样的语言中,我们可以通过使用非贪婪的正则表达式来解决这个问题。因为 sed 不支持非贪婪的正则表达式,我们必须尝试使用​​像[^/]*/.

标准警告:一般来说,html 格式可能非常复杂,有很多正则表达式不适合处理的特殊情况。使用 html 时,通常最好使用 html 特定的工具(如 python 的 beautifulsoup)。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将html中心标记与php echo一起使用

来自分类Dev

将echo -e与反斜杠(\)一起使用

来自分类Dev

将 Laravel Echo 与 docker 一起使用(CORS 问题)

来自分类Dev

将sed命令与变量一起使用

来自分类Dev

将sed与包含url的变量一起使用

来自分类Dev

将sed命令与变量一起使用

来自分类Dev

将-e选项与sed一起使用以从脚本运行sed失败

来自分类Dev

如何从用户那里获取 inout 并使用 echo 或 sed 修改文件

来自分类Dev

如何将sed与文件路径变量以及regex回调和算术表达式一起使用

来自分类Dev

与regex一起使用sed从文件中删除文本

来自分类Dev

Sed将徽标与模式标记一起包围

来自分类Dev

为什么echo> file比echo使用更多实时时间| sed>文件?

来自分类Dev

如何执行使用echo和sed生成的shell命令?

来自分类Dev

将cut / awk / sed与两个不同的定界符一起使用

来自分类Dev

将 sed 与两种可能的输入格式一起使用

来自分类Dev

将 sed 与类似于 cut 的分隔符一起使用

来自分类Dev

如何将Echo变量设置为Sed文本动态更改

来自分类Dev

如何将Echo变量设置为Sed文本动态更改

来自分类Dev

将sed用于多个目录中的文件

来自分类Dev

将终端sed到.command文件中

来自分类Dev

使用sed将文本附加到文件

来自分类Dev

使用 sed 将 #' 插入配置文件

来自分类Dev

sed无法与多个输入文件一起正常使用

来自分类Dev

sed无法与多个输入文件一起正常使用

来自分类Dev

使用sed将CSV中的数字右移

来自分类Dev

可以将echo操纵为写入PHP中的文件

来自分类Dev

为什么在此sed命令中使用cat与echo不一致?

来自分类Dev

与gnuplot一起使用sed在循环中绘制文件中的特定行

来自分类Dev

使用sed将文件中的文本替换为变量

Related 相关文章

热门标签

归档