我正在尝试用page=#"
替换各种html文件中的page=#/index.html"
。我尝试过使用命令:
sed -i -re 's|"(page=[0-9]+)"|"\1/index.html"|' *.html
以及众多解释但尚未成功。代码sed -i -re 's|"(page=[0-9]+)"|
的第一部分似乎正常工作,但我似乎无法格式化结束以实现我的目标。任何修改此命令的建议都将非常感谢!
答案 0 :(得分:0)
如果您尝试替换实际字符串看起来像page=#"
的{{1}},那么RE中的第一个双引号将无法正确匹配任何内容。它只会匹配,如果它看起来像:
page=99"
但我猜这是在html链接的末尾所以它可能没有初始的双引号。这应该工作:
"page=99"
另外要确认,如果您使用的是OS X,则无法使用GNU选项`sed -i -re 's|(page=[0-9]+)"|\1/index.html"|' *.html
或使用-r
而不使用参数,因此它看起来像这样:
-i
`sed -i '' -Ee 's|(page=[0-9]+)"|\1/index.html"|' *.html
表示使用扩展正则表达式,因此您可以编写-E
而不是(
进行分组。在GNU \(
中,这是sed
。
-r
意味着就地编辑文件,在GNU上它不需要参数,但在其他系统上你需要传递扩展以进行备份,或者-i
没有备份