Как к строкам поиска и строкам замены, соответствующим замене, перечисляют для нескольких файлов

Можно совместно использовать /usr/local. Иногда эти два дистрибутива будут иметь различные версии в наличии библиотек, таким образом, Вы, возможно, должны будете установить несколько библиотек по одной стороне или другой или в /usr/local самостоятельно. Нагрузка установки нечетной дополнительной библиотеки, вероятно, будет компенсирована, не имея необходимость поддержать две установки каждой программы в /usr/local.

Если существуют программы, на которых Вы только хотите /usr/local для одной из систем можно назначить другую встречу: не совместно использовать /usr/local, но доля убирать репозиторий, и делает символьные ссылки в /usr/local из обеих систем.

Вы не должны помещать /usr/local на отдельном разделе для совместного использования его. Можно сохранить его на системном разделе одной системы, смонтировать его везде, где Вы хотите в другой системе и создаете символьную ссылку.

Вы не можете совместно использовать /var. Существуют незначительные различия в том, как каталоги расположены, и каждое распределение имеет свои собственные идентификаторы пользователей. Вы можете совместно использовать части /var, например, почтовая шпулька.

35 ГБ для /var огромно. Вам не нужно это для базовой системы. Если Вы собираетесь поместить много данных там (например, потому что это - то, где Ваш корень веб-сервера), измерьте файловую систему согласно своим данным. В разделении нет никакого смысла /var от корневого раздела поэтому объедините их. Вы не упоминаете /usr в Вашем списке: это также не должно быть разделено от корневого раздела. Просто сделайте один системный раздел для каждой ОС плюс общее /home. Вам действительно нужны больше чем 15 ГБ для системного раздела, если Вы не будете собираться быть очень консервативными в программах, Вы установите. Сделайте системный раздел на 50 ГБ, и Вы будете в порядке.

Нет никакой потребности в отдельном /boot раздел, если у Вас нет дополнительных требований, таких как шифрование системного раздела.

5
13.04.2017, 15:36
2 ответа

Ответ

Если вас не беспокоит скорость (это одноразовая задача), то, возможно, вы могли бы попробовать следующее:

cat map.txt | while read line; do
neww=${line##* };
oldw=${line%% *};
find /some/folder -type f -exec sed -i "s/$oldw/$neww/g" {} \;
done

Не оптимально, я знаю... :-P

PS: проверьте в папке теста, работает ли она!

Объяснение

В основном:

  1. Cat file map.txt.
  2. Читайте каждую строку и получите слово для замены $oldw и замену $neww.
  3. Для каждой пары выполните команду find, которую вы уже использовали (обратите внимание на двойные кавычки в этот раз, чтобы позволить замену переменных).

О расширении параметров

Для установки переменных $oldw и $neww мы должны получить первое и последнее слово каждой строки. Для этого мы используем расширение параметров (чистая реализация Bash), хотя мы могли бы использовать и другие способы получения первого и последнего слова строки (например, cut или awk).

  • ${line##* } : из переменной line удалите самый большой префикс (двойной #) шаблона, где шаблоном являются любые символы (*) с последующим пробелом (). Таким образом, мы получаем последнее слово в шаблоне #.
  • ${line%% *} : из переменной строки удаляем самый большой суффикс (двойной %) шаблона, где шаблон - это пробел (), за которым следуют любые символы (*). Таким образом, мы получаем первое слово в строке .

Слова в этом случае были разделены пробелом, но мы могли использовать любой разделитель.

.
4
27.01.2020, 20:40

Иногда мне нужно искать и заменять термины в конфигурационных файлах.

Я написал скрипт, доступный на github sandr - поиск и замена, который позволяет создавать/использовать карту и выполнять замену в файлах.

Пример использования :

$ cat file
Voyez ce jeu exquis wallon, de graphie en kit mais bref. Портэ с виски а-ля Juge Blond qui fume sur son ole intérieure, à côté de l'alcôve ovoïde, où les bûches se consument dans l'âtre, В связи с тем, что в настоящее время в мире существует неопределенность в вопросе о причинах неопределенности в Моей стране, в котором, по крайней мере, не хватает, чтобы и в том, и в другом месте, и в том, что касается качества его "творчества", и в том, и в другом месте. Прувез, кавалер
$ кошачья карта.txt 
стена => Уоллон
se => SE
пенсер => ПЕНСЕР
кавалер
$ кошачий файл | ./sandr -a map.txt 
Voyez ce jeu exquis WALLON, de graphie en kit mais bref. Портэ с виски а-ля Juge Blond qui fume sur son ole intérieure, à côté de l'alcôve ovoïde, où les bûches SE consument dans l'âtre, В связи с тем, что ПЕНСЕР не в состоянии решить вопрос о неоднозначной ситуации в Моей стране, в которой, по мнению Пенсера, существует опасность того, что она может привести к снижению уровня и качества его работы. Прувез, Бо

0
27.01.2020, 20:40

Теги

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