Использованиеsed
:
$ sed -f script.sed file
dn : Does not matter
uid=321 456 678
foo=/234
bar=/456
git=/543
dn : Does it matter
uid=321 456 678
foo=/543
bar=/423
git=/501
...где script.sed
это
H # Append a newline and the current line to the hold space
/^$/bout # Empty line: branch to ':out'
$bout # Last line: branch to ':out'
d # Delete line, start again from the top
:out
x # Swap in the data from the hold space
/uid.*uid/d # Delete the data if it contains two "uid"
s/\n// # Remove the first embedded newline
# (implicit print)
Это собирает прочитанные строки в «пространстве хранения» (буфере общего назначения в sed
), и когда он достигает пустой строки или конца ввода, пространство хранения содержит один из «блоков» в исходный файл. Если такой блок содержит два экземпляра строки uid
, он отбрасывается, иначе выводится.
Загрузка модуля выполняется с помощью одного изinit_module
или finit_module
. Первый копирует модуль из указателя, второй читает его из файлового дескриптора. Оба поддерживают передачу дополнительных параметров модулю и пару флагов для ядра.
Выгрузка модуля выполняется с помощью delete_module
, которая принимает имя выгружаемого модуля.
Если вы хотите написать код, который делает это, вы можете вместо этого использовать libkmod
; он является частьюkmod
и доступен во всех дистрибутивах.