У меня была такая же проблема, когда я перенаправил SUPER + H на ВЛЕВО , что сработало, но не повторилось.
Это сработало, когда я добавил autorepeat = yes
в определение ключевого символа.
Нашел здесь:http://web.archive.org/web/20190320180541/http://pascal.tsu.ru/en/xkb/gram-symbols.html
Дан файл с именем file.txt со следующими входными данными:
<VirtualHost *:443>
ServerAdmin webmaster@domain.com
ServerName name1
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@domain.com
ServerName name2
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@domain.com
ServerName name3
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@domain.com
ServerName name4
</VirtualHost>
и скрипт с названием get -virtual -host.sh с содержимым:
#!/bin/bash
if [ $# -ne 2 ]; then
echo "Usage: get-virtual-host.sh <filename> <ServerName>"
exit 1
fi
sed -ne "/^<VirtualHost/{x;:cycle n; /ServerName/{/ServerName[[:space:]]\+$2/!{s/.*//; x; d}}; /<\/VirtualHost/{H;x;p;q}; H; bcycle}" $1
затем вы можете получить раздел VirtualHost, указав параметр, подобный этому:
get-virtual-host.sh file.txt name2
который выводит
<VirtualHost *:443>
ServerAdmin webmaster@domain.com
ServerName name2
</VirtualHost>
Это то, что вам нужно?
Сценарий Sed объяснен в соответствии с запросом:
Команда sed говорит:
Если есть строка, начинающаяся с
@Juxtaposed --Я знаю тебя по группам unix.com... Ты эксперт в этих вещах
решение отлично работает для меня --, за исключением того, что мне пришлось
egrep -v "^$|^#" default-ssl.conf|egrep ServerName |while read S N
do
./get-virtual-host.sh default-ssl.conf $N > configs/$N.conf
done
и некоторые из файлов пусты --, но я могу жить с этим --только 2 из них были нулевого размера, хотя они также были полными виртуальными хостами.
В любом случае, большое спасибо за помощь.
По сути, вы хотите разделить файл на каждый <VirtualHost
, а затем переименовать их в соответствии со значением ServerName
.
Шаг 1 :разделение файла
csplit -z -f vhost_ '/<VirtualHost/' '{*}'
csplit
позволяет разбивать файлы по заданному шаблону, здесь <VirtualHost
, включенными параметрами являются:-f vhost_
имена результирующих файлов с этим префиксом (новые файлы будут vhost_00
, vhost_01
,.... ), -z
не создавать пустые файлы, {*}
разбивать при каждом совпадении с образцом. Больше можно найти вman csplit
Шаг 2 :переименование файлов
Простая подпрограмма bash должна помочь:
for f in vhost_??
do mv $f $(grep ServerName $f | awk '{print $2".conf"}')
done
Кажется, вы знакомы с awk
и bash
, поэтому не объяснили.