Оболочка эквивалентна PHP preg_replace () - PullRequest
8 голосов
/ 20 декабря 2010

Приветствую народ.

Я ищу способ сделать то же самое, что делает 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 ]

10 голосов
/ 20 декабря 2010

Вы можете использовать sed как:

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

Посмотреть

0 голосов
/ 28 октября 2015

Хотя 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 s \9

...