Использование команды sed
чтение(r
):
$ sed '\#</action>#r customAction.txt' uca.txt
<?xml encoding="UTF-8" version="1.0"?>
<actions>
<action>
<!--some code-->
</action>
<action>
<!--custom configuration-->
</action>
</actions>
В конце входного файла есть пустая строка, и она сохраняется в выходных данных. Команда r
вставит содержимое данного файла после нахождения данного шаблона. Это работает, как и ожидалось, для данных примера, потому что единственное вхождение строки </action>
. Если бы во входном файле было больше ранее -существующих действий, это не сработало бы должным образом.
Следующее будет работать с файлом, содержащим несколько действий:
gsed -e '\#</actions>#d' -e '$ r customAction.txt' -e '$ a\</actions>' uca.txt
Он удаляет тег </actions>
при обнаружении и вставляет содержимое customAction.txt
в конце. Затем он добавляет </actions>
после этого.
Этот способ написания команды a
требует GNU sed
(, поэтомуgsed
).
Краткий ответ заключается в том, что не так уж полезно сравнивать версии ядра между дистрибутивами; надо сравнивать дистрибутивы в целом.
KernelNewbies предоставляет хорошие обзоры изменений в каждом основном выпуске ядра. Вот некоторые из значительных изменений, добавляющих новые функции:
getrandom()
в версии 3.17 bpf()
в 3.18 userfaultfd()
, возможности окружения в версии 4.3 statx()
в версии 4.11 Сюда не входят многочисленные улучшения самого ядра, включая улучшения производительности (и регрессии ), улучшения масштабируемости, улучшения безопасности (рандомизация адресного пространства, очистка и т. д. ), ошибка исправления; и поддержка нового оборудования.Это то, что получит большинство пользователей, перейдя на новые ядра; в то время как добавленные функции, перечисленные выше, приятны, большинство из них актуальны только при использовании с соответствующими инструментами пользовательского пространства, а дистрибутивы, работающие со старыми ядрами без необходимой поддержки, также не будут включать эти инструменты.
Дистрибутивы действительно лучше всего использовать как части :их ядра вместе с их библиотеками и программами, которые они упаковывают.
При сравнении версий ядра также не учитываются функции обратного портирования, которые есть в некоторых дистрибутивах. Вообще говоря, дистрибутивы можно разделить на две категории :быстро меняющиеся -дистрибутивы, которые привязаны к основным ядрам, и долгосрочные -дистрибутивы, которые поддерживают стабильное базовое ядро в течение очень долгого времени. Fedora — пример первого, RHEL — второго, а Debian находится где-то посередине: основные ядра отслеживают обновления до долгосрочного -стабильного выпуска ядра (4.19, который в настоящее время находится на уровне 103-го. стабильная версия ). Таким образом, хотя использование ядра 3.10 в RHEL 7 может означать, что вы упускаете множество драйверов, улучшений производительности и новых функций, многие из них перенесены и доступны пользователям RHEL 7.