Используя функцию и GNU Parallel, вы заменяете повторяющийся раздел:
cd ~
apt-get update
apt-get install varnish -y
sed -i 's/Listen 80/Listen 8080/g' /etc/apache2/ports.conf
myfunc() {
sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/$1 &&
a2ensite $1
}
export -f myfunc
parallel myfunc {/} ::: /etc/apache2/sites-available/*
mkdir -p /etc/systemd/system/varnish.service.d # Be aware! You might not need this in the future.
cat <<-'VARNISH' > /etc/systemd/system/varnish.service.d/customexec.conf
[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
VARNISH
systemctl restart apache2.service && systemctl daemon-reload && systemctl restart varnish.service
Использование GNU awk:
$ awk -F'[.][.]' '{printf "%d..%d\n", strtonum("0x"$1), strtonum("0x0"$2)}' file
48..57
8596..8601
8617..8618
8986..8987
9193..9203
9208..9210
9642..9643
-F'[.][.]'
сообщает awk, что наши поля ввода разделены ...
.
Формат "%d..%d\n"
указывает, что в выводе должны быть десятичные числа, разделенные двумя точками.
strtonum
— это функция awk для преобразования строки в число. Чтобы сообщить awk, что число шестнадцатеричное, мы помещаем перед ним 0x
, как в "0x"$1
или "0x"$2
.
Предполагается, что число, начинающееся с нуля, является восьмеричным числом.
Восьмеричные числа должны иметь цифры в диапазоне от 0 -до 7 (без 8 или 9 ).
Таким образом, число 9 в 0039
«слишком велико для основания»
Однако это работает, (предполагая, что 0039 является шестнадцатеричным числом):
$ echo $((0x0039))
57
Если вы хотите преобразовать число, выполните:
$ number=0039
$ printf 'octal=%o decimal=%d hexadecimal=%x\n' "$((0x$number))"{,,}
octal=71 decimal=57 hexadecimal=39