ETA: при условии, что URL-адреса встроены в другой текст:
$ perl -lnwe 's#http://goo.gl/\w{5}\K\b# "?" . rand(100) #ge; print' googl.txt
Например:
$ cat googl
random text here, and perhaps some html <a href="http://goo.gl/abc23">
more stuff http://goo.gl/abc23 foo fake link http://foo.bar/abc12
longer http://goo.gl/abc23123123 foo fake link http://foo.bar/abc12
$ perl -lnwe 's#http://goo.gl/\w{5}\K\b# "?" . rand(100) #ge; print' googl
random text here, and perhaps some html <a href="http://goo.gl/abc23?69.998515">
more stuff http://goo.gl/abc23?26.186867532985 foo fake link http://foo.bar/abc12
longer http://goo.gl/abc23123123 foo fake link http://foo.bar/abc12
-l
chomps
файла и добавление новой строки в print.
-n
добавляет цикл while(<>)
вокруг скрипта, что в основном означает, что он читает либо из имен файлов аргументов, либо из STDIN , \K
означает «сохранить соответствующий текст», \b
- это граница слова, поэтому вы не соответствуете частичным строкам.
Обратите внимание, что он все равно будет соответствовать http://goo.gl/abc12/foo
, но, поскольку я не знаю, как выглядят ваши данные, вам придется определить, какие границы допустимы.
Конечно, rand(100)
просто является заполнителем для любой функции, которую вы собираетесь использовать.
Если вам нужна была версия скрипта, вот код с кодом:
use strict;
use warnings;
BEGIN { $/ = "\n"; $\ = "\n"; }
while (<>) {
chomp;
s[http://goo.gl/\w{5}\K\b]['?' . rand(100);]eg;
print;
}