KVM построен на базе QEMU, а QEMU - это системная виртуальная машина, как вы ее называете.
Я не знаю ваш источник информации, но из https://en.wikipedia.org/wiki/Virtual_machine
Системная виртуальная машина предоставляет полную системную платформу, которая поддерживает выполнение полного рабочего система (ОС).
и http://qemu.weilnetz.de/qemu-doc.html#intro_005ffeatures
Полная эмуляция системы. В этом режиме QEMU эмулирует всю систему (например, ПК), включая один или несколько процессоров и различные периферийные устройства. Его можно использовать для запуска различных операционных систем без перезагрузки ПК или для отладки системного кода.
ОТРЕДАКТИРОВАНО
Команда sed 's/^(```)/(```bash)/g'
не работает, так как круглые скобки интерпретируются буквально.
Вам, вероятно, придется избегать круглых скобок, как в
$ sed 's/^\(```\)/```bash/g'
Кроме того, вы можете включить расширенные регулярные выражения:
$ sed -E 's/^(```)/```bash/g'
, так что круглые скобки не нужно экранировать.
Или просто удалите круглые скобки:
$ echo '```' | sed 's/^```/```bash/g'
```bash
Чтобы соответствовать только открытию ```
, вы можете использовать такое регулярное выражение:
$ sed --null-data -E 's/[`]{3,3}([^`]*)([`]{3,3}){0,1}/```bash\1\2/g'
Предупреждение:Ошибка, если`(обратная галочка )находится между последовательностями тройных обратных кавычек.
Он использует --null-data
, чтобы позволить sed
обрабатывать ввод как одну строку (на самом деле, строки, разделенные нулевыми символами ), а затем ищет последовательности текста ```--```, чтобы заменить их на ```bash -текст -```.
Вы можете попробовать использовать одинарные кавычки для команды sed
:
sed 's/^(```)/(```bash)/g'
Это используется, чтобы избежать интерпретации символов из bash
Но на основе вашего файла вам лучше использовать что-то вроде:
sed 's/^```/```bash/g'
Я бы попробовал что-то вроде
perl -ple 'if (m/^```$/) { if (--$|) { s/$/bash/ } }' data.md
Чтобы заменить каждую вторую строку ```
на ```bash
, наверное, проще с awk:
awk '$0 == "```" && alt = 1 - alt {$0 = "```bash"}; {print}' < file
Чтобы заменить каждую```
строку, это будет:
sed 's/^```$/&bash/'
Нет необходимости явно фиксировать совпадение (, что, кстати, делается с помощью \(...\)
; (...)
будет работать только после включения расширенных регулярных выражений, поддерживаемых некоторыми реализациями sed
с -E
или -r
), когда это полное совпадение, так как все совпадение в любом случае фиксируется как &
.
Флаг g
не нужен. Флаг g
предназначен для замены всех вхождений в строке , но здесь может быть только одно вхождение в строке, поскольку мы привязываем шаблон к началу и концу строки с помощью ^
и $
.
С sed
, чтобы заменить каждую вторую строку, вы можете сделать:
sed '
/^```$/ {
s//&bash/;:1
n;//!b1
}'
В одну строку:
sed -e '/^```$/ {s//&bash/;:1' -e 'n;//!b1' -e '}'
С реализацией GNU sed
вы можете сократить его до:
sed '/^```$/{s//&bash/;:1;n;//!b1}'
(но это не стандартный синтаксис sed
как POSIX, у вас не может быть никакого кода после команд :
или b
и должен быть ;
или символ новой строки перед}
).