Как выйти “/” в sed, управляют в Марионеточном сценарии?

Я никогда не настраивал кластер этот путь, но я выполнил несколько VM's Windows 2008 Server в ESXI на Рабочей станции только, чтобы видеть, работало ли это. Даже с довольно достойной рабочей станцией (твердотельные диски, загрузки RAM, Core i7 ЦП) VM's Сервера были функциональны, но не действительно применимы.

Для сравнения выполнение подобного VM's сервера одновременно непосредственно на Рабочей станции совершенно применимо, просто удостоверяются, что у Вас есть много RAM и быстрого диска (или еще лучше, дисков).

3
задан 11 March 2013 в 14:48
4 ответа

В случаях, когда выражение sed содержит '/', вы можете рассмотреть возможность использования другого разделителя. В этом примере я выбрал вертикальную черту.

sed -i.bak 's | PREFIX = / jenkins | PREFIX = / foobar | g' / etc / default / jenkins

Использование этого синтаксиса в манифесте Puppet будет на мой взгляд, намного чище и читабельнее.


Из страницы информации sed:

\% REGEXP% ' (% 'можно заменить любым другим одиночным символом.)

  Это также соответствует регулярному выражению REGEXP, но позволяет
используйте другой разделитель, чем `/ '. Это особенно полезно
 если сам REGEXP содержит много косых черт, так как он избегает
утомительное избавление от каждого символа "/". Если в REGEXP есть
 символы-разделители, каждый должен быть экранирован обратной косой чертой (`\ ').
4
ответ дан 3 December 2019 в 04:46

Во многих версиях sed вы можете использовать другой символ в качестве разделителя, чтобы избежать необходимости экранирования / например, довольно часто используется | или #

sed -i.bak 's#PREFIX=/jenkins#PREFIX=/foobar#g' /etc/default/jenkins
4
ответ дан 3 December 2019 в 04:46

Эй, стой ... подождите! Сед в марионеточном манифесте немного сумасшедший. Вы должны использовать ресурс file_line из библиотеки puppetlabs stdlib.

(вы должны установить весь модуль, но это пользовательский тип ресурса) https://github.com/puppetlabs/puppetlabs-stdlib/blob/master/lib/puppet/type/file_line.rb

Пример:

  file_line { 'sudo_rule':
    path => '/etc/sudoers',
    line => '%sudo ALL=(ALL) ALL',
  }
3
ответ дан 3 December 2019 в 04:46

Оказывается, \\\\ / работает.

Например:

exec { 'Change-prefix':
  command => "sed -i.bak s/PREFIX=\\\\/jenkins/PREFIX=\\\\/foorbar/g /etc/default/jenkins",
  path    => ["/bin"],           
}

Изменить : ... но, конечно, используя другой разделитель, как предложили Кенни и Иэн , это намного более чистое решение!

1
ответ дан 3 December 2019 в 04:46

Теги

Похожие вопросы