如何在sed命令中使用正则表达式

发布于 2024-09-26 18:15:24 字数 273 浏览 4 评论 0原文

我在某些文件中有一些具有此模式的字符串:

  • domain.com/page-10
  • domain.com/page-15 ....

我想用类似

  • domain.com/apple-10.html的
  • domain.com/apple-15.html

替换它们我发现我可以使用sed命令一次替换它们但是因为之后数字应该添加一些东西我想我必须使用正则表达式来做到这一点。但我不知道怎么办。

i have some strings with this pattern in some files:

  • domain.com/page-10
  • domain.com/page-15
    ....

and i want to replace them with something like

  • domain.com/apple-10.html
  • domain.com/apple-15.html

i have found that i can use sed command to replace them at a time but because after the numbers should something be added i guess i have to use regular expression to do it. but i don't know how.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

灯角 2024-10-03 18:15:24
sed -i.bak -r 's/page-([0-9]+)/apple-\1.html/' file

sed  's/page-\([0-9][0-9]*\)/apple-\1.html/' file > t && mv t file

除了sed之外,你还可以使用gawk的gensub()

awk '{b=gensub(/page-([0-9]+)/,"apple-\\1.html","g",$0) ;print b  }' file
sed -i.bak -r 's/page-([0-9]+)/apple-\1.html/' file

sed  's/page-\([0-9][0-9]*\)/apple-\1.html/' file > t && mv t file

Besides sed, you can also use gawk's gensub()

awk '{b=gensub(/page-([0-9]+)/,"apple-\\1.html","g",$0) ;print b  }' file
孤芳又自赏 2024-10-03 18:15:24
sed -i 's/page-\([0-9]*\)/apple-\1.html/' <filename>

([0-9]*)捕获一组数字;替换字符串中的 \1 引用捕获并将其添加为替换字符串的一部分。

如果您需要保留文件的副本而不进行替换,您可能需要使用类似 -i.backup 的内容,或者只是省略 -i 并使用 I/O 重定向方法。

sed -i 's/page-\([0-9]*\)/apple-\1.html/' <filename>

The ([0-9]*) captures a group of digits; the \1 in the replacement string references that capture and adds it as part of the replacement string.

You may want to use something like -i.backup if you need to keep a copy of the file without the replacements, or just omit the -i and instead use the I/O redirection method instead.

樱花坊 2024-10-03 18:15:24

解决该问题的另一种方法是:

sed -i.bak 's/\(^.*\)\(page-\)\(.*\)/\1apple-\3.html/' Files

这里使用引用(\1\2\3)存储和检索搜索模式。

One more way to resolve the problem:

sed -i.bak 's/\(^.*\)\(page-\)\(.*\)/\1apple-\3.html/' Files

Here the searching patterns are stored and retrieved using references (\1, \2, \3).

小猫一只 2024-10-03 18:15:24

这会起作用

sed 's/$/\.html/g' file.txt

This will work

sed 's/$/\.html/g' file.txt
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文