regex - 使用 GREP 和 XARGS 删除 .html URL
问题描述
我正在使用 WGET 刻录 PHP 网站的静态副本。我想删除每个文件中对.html的所有引用<a href
。所以任何链接,例如,<a href="path/project-name.html">Project Name</a>
我想更改为<a href="path/project-name">Project Name</a>
。
该命令grep -rl index.html . | xargs sed -i 's/index.html//g'
非常适合删除所有链接中的每个index.html。
但我无法让它对每个带有 command 的.htmlgrep -rl *.html . | xargs sed -i 's/*.html//g'
链接都有效。
对我的正则表达式的任何帮助将不胜感激。
解决方案
's/*.html//g'
sed
是错误的,因为您在 LHS(替换命令的左侧部分)中输入了一个全局模式,其中需要一个正则表达式模式。
您可以使用
grep -rl *.html . | xargs sed -i -E 's/(href="[^"]*)\.html"/\1"/g'
详情:
-E
- 启用 POSIX ERE 正则表达式语法的选项(href="[^"]*)\.html"
- 匹配并捕获到第 1 组(稍后,通过\1
反向引用访问)href="
子字符串和除之后之外的任何零个或多个字符"
,然后仅匹配.html
子字符串\1"
- 替换为 Group 1 和一个"
字符g
- 一行上的所有非重叠事件。
推荐阅读
- r - violin_plot() 具有用于分组变量的连续轴?
- python - 扩展冻结数据类并从基类实例中获取所有数据
- c# - 如何调用这个函数devtools selenium c#
- windows - 使用 Visual Basic 脚本和批处理将 Java 作为 Windows 服务
- r - 使用 ggplot2 在 X 轴上使用日期时间时如何在绘图内部进行注释?
- ios - Swift 包中等效的 CocoaPods $PODS_ROOT 环境变量
- javascript - 如何在 Angular 高阶组件 (HOC) 中将 html 元素作为子元素传递?
- javascript - 仅在页面加载后在脚本中运行 JS
- android - 来自资源的图像不会在使用 QML (QT) 的 Android 上加载
- scala - fs2并发队列Scala:缺乏洞察力