Вопрос по SSH

C0
На сайте с 23.04.2006
Offline
98
CE0
503

Собственно делаю замена в файлах на хосте:

find /patch -name "*.html" -exec sed -i 's/[START]/[FINISH]/g' {} \+

Можно как то сделать рандомную подставку ?

([FINISH1]|[FINIS2]|[FISISH3]) тоесть указать несколько вариаций на змену?

Достопримечательности Крыма (https://of-crimea.ru)
Himiko
На сайте с 28.08.2008
Offline
560
#1

А не проще реализовать скриптом?

Сначала найти файлы, потом рандомно применить команду замены?

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
C0
На сайте с 23.04.2006
Offline
98
CE0
#2

Увы но в данной ситуации не проще.(

freezebreeze
На сайте с 31.10.2013
Offline
9
#3
CE0:
Увы но в данной ситуации не проще.(

В регулярках POSIX (они используются в SED) я не нашёл рандомной выборки шаблона для замены.

Есть только возможность конструкции "заменяемый текст1" или "заменяемый текст2" или ... / текст для замены.

Верить никому нельзя. Мне — можно.
esetnod
На сайте с 16.07.2009
Offline
134
#4

В смысле в каждом файле все вхождения заменять на одно рандомное значение, или все?

Быстрый хостинг на SSD от $0.99 (http://just-hosting.ru/) | OpenVZ (http://just-hosting.ru/vds.html) и KVM (http://just-hosting.ru/vds-kvm.html) VDS от $7.95
C0
На сайте с 23.04.2006
Offline
98
CE0
#5
freezebreeze:
В регулярках POSIX (они используются в SED) я не нашёл рандомной выборки шаблона для замены.
Есть только возможность конструкции "заменяемый текст1" или "заменяемый текст2" или ... / текст для замены.

Вот я тоже не заметил.

---------- Добавлено 05.11.2013 в 16:14 ----------

esetnod:
В смысле в каждом файле все вхождения заменять на одно рандомное значение, или все?

Да именно так :))) :)

esetnod
На сайте с 16.07.2009
Offline
134
#6

Ну если чисто в одну строку надо, то можно как-то так:

perl -p -i -e 'my @array=('one', 'two', 'three'); my $rand=$array[rand @array]; s/1/$rand/g'

Только exec в find надо будет с \; завершить.

C0
На сайте с 23.04.2006
Offline
98
CE0
#7
esetnod:
Ну если чисто в одну строку надо, то можно как-то так:
perl -p -i -e 'my @array=('one', 'two', 'three'); my $rand=$array[rand @array]; s/1/$rand/g'

Только exec в find надо будет с \; завершить.

Спасибо огромное! То что нужно!

freezebreeze
На сайте с 31.10.2013
Offline
9
#8
CE0:
Увы но в данной ситуации не проще.(
CE0:
Спасибо огромное! То что нужно!

сами себе противоречите, приведённое решение и есть скрипт.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий