Это невежественный ответ, поскольку у меня нет доступа к облачному каталогу Amazon с который это проверить. Но в духе «Как это сделать» : настройте облако Amazon для обслуживания NFS , затем войдите удаленно на этот сервер NFS с помощью cachefilesd
.
«Легче сказать, чем сделать ...»
Если вам нужно одно выражение, вы можете сделать:
sed -i 's#/client/[^/]*#/client/12x_64#g' config*
Я использовал / client / [^ /] *
в качестве маркера, чтобы найти то, что мы хотим заменить (т.е. все, что находится после / client /
, но до следующего /
), но мы могли бы сделать client / [^ / ] * / instance
, если это позволяет избежать сопоставления других элементов в файле.
Вы можете объединить все три команды в одно выражение. Вам нужно заменить все варианты 1
, за которыми следует либо 0
, либо 1
, затем x
, а затем - необязательный _64
. Это может быть выражено следующим расширенным регулярным выражением:
1[01]x(_64)*
[]
обозначает символьный класс , поэтому [01]
соответствует либо единице, либо нулю. Конструкция (foo) *
будет соответствовать 0 или более экземплярам foo
. Итак, (_ 64) *
будет соответствовать как строке _64
(и ее повторениям, таким как _64_64_64
), так и пустой строке. Это позволяет сопоставить как 11_x64
, так и 11x
, и когда это не так.
Итак, если мы объединим это в выражение sed
, мы получим:
sed -iE 's/1[01]x(_64)*/12_64/' config*
Как насчет подготовки «файла конфигурации шаблона», в котором вы заменяете необходимые части конфигурации для конкретной версии? Допустим, у вас есть следующий шаблон
#/bin/bash
echo "set ##V1##=/app/client/##ARCH1##/instance" > cfg-file1
echo "set ##V2##=/app/client/##ARCH2##/instance" > cfg-file1
echo "set ##V3##=/app/client/##ARCH3##/instance" > cfg-file1
Затем вы можете выполнять замену команд по версии в зависимости от параметра командной строки:
#!/bin/bash
[ $# -lt 1 ] && (echo "usage: replace <version>"; exit 1;)
if [ "$1" == "1" ]; then
cat template.txt | sed -e "s/##V1##/VAR1/g;s/##ARCH1##/arch_xy_/g;s/##V2##/VAR2/g;s/##ARCH2##/arch2_xy_/g;"
# etc...
fi
Это можно легко расширить.
Вы можете просто объединить их следующим образом:
sed -i 's / 10x_64 / 12x_64 / g; s / 11x / 12x_64 / g; s / 11x_64 / 12x_64 / g 'конфигурация *