Shell 相当于 PHP 的 preg_replace()

发布于 2024-10-08 07:44:02 字数 522 浏览 4 评论 0原文

大家好。

我正在寻找一种方法来完成与 PHP 相同的事情 preg_replace() 在 shell 脚本中执行(搜索与正则表达式匹配的文本并替换它)。

因此,请考虑以下文件。

<a href="http://example.com/">Website #1</a>
<a href="http://example.net/">Website #2</a>
<a href="http://example.org/">Website #3</a>

我想知道:

http://example.com/
http://example.net/
http://example.org/

有办法做到这一点吗?谢谢。

Greetz folks.

I'm looking for a way to do the same stuff than PHP's preg_replace() does (search text matching a regular expression and replace it) in a shell script.

So, consider the following file.

<a href="http://example.com/">Website #1</a>
<a href="http://example.net/">Website #2</a>
<a href="http://example.org/">Website #3</a>

And I want to get this:

http://example.com/
http://example.net/
http://example.org/

Is there a way to do this? Thanks.

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

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

发布评论

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

评论(2

跨年 2024-10-15 07:44:02

您可以将 sed 用作:

sed -r 's/.*href="([^"]*)".*/\1/' file

查看

You can use sed as:

sed -r 's/.*href="([^"]*)".*/\1/' file

See it

救赎№ 2024-10-15 07:44:02

虽然 sed 非常适合,但它不允许超过 9 个反向引用。 Perl 确实如此:

echo "a b c d e f g h i j k l m n o p q r s t u v w x y z" | \
    perl -lpe 's/(\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+)/$1;$2;$3;$4;$5;$6;$7;$8;$9;$10;$11;$12;$13;$14;$15;$16;$17;$18;$19;$20;$21;$22;$23;$24;$25;$26/g'
a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z

这个(愚蠢的)示例表明它可以比 sed\9 走得更远

While sed is perfectly suitable, it doesn't allow more than 9 backreferences. Perl does:

echo "a b c d e f g h i j k l m n o p q r s t u v w x y z" | \
    perl -lpe 's/(\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+)/$1;$2;$3;$4;$5;$6;$7;$8;$9;$10;$11;$12;$13;$14;$15;$16;$17;$18;$19;$20;$21;$22;$23;$24;$25;$26/g'
a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z

This (dumb) example show it's possible to go further than sed's \9

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