如何使用sed命令将文本添加到各种数字的末尾?

时间:2016-03-02 17:25:46

标签: html bash unix sed reference

我正在尝试用page=#"替换各种html文件中的page=#/index.html"。我尝试过使用命令:

sed -i -re 's|"(page=[0-9]+)"|"\1/index.html"|' *.html

以及众多解释但尚未成功。代码sed -i -re 's|"(page=[0-9]+)"|的第一部分似乎正常工作,但我似乎无法格式化结束以实现我的目标。任何修改此命令的建议都将非常感谢!

1 个答案:

答案 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没有备份