Shell等效于PHP preg_replace()

时间:2010-12-20 15:13:12

标签: php regex bash preg-replace unix

格雷茨人。

我正在寻找一种方法来执行与PHP的preg_replace()相同的工作(搜索匹配正则表达式的文本并替换它)。

因此,请考虑以下文件。

<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/

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

2 个答案:

答案 0 :(得分:10)

您可以将sed用作:

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

See it

答案 1 :(得分:0)

虽然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的{​​{1}}更进一步