Используйте приведенную ниже команду, и она точно решит проблему:
# sudo rmmod floppy
# echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklist-floppy.conf
# update-initramfs -u -k all
Перезагрузка...
Это, скорее всего, работа для какого-то инструмента, который понимает XML-документы, а не grep
или тому подобного. На это есть хорошие ответы.
Возможно:
grep
Использование perl -регулярное выражение и другие дополнения.
grep -Pzo "(?s)\N*<key name='enabled'.*<\/key>\n" the_file.xml
Или немного более ограниченный (Не захватываются начальные пробелы):
grep -zo "<key name='enabled'.*<\/key>."
awk
awk '
/<key name='\''enabled'\''/ { p=1 }
p { print $0 }
p && /<\/key>/ { exit }
' the_file.xml
Или
awk "/<key name='enabled'/,/<\/key>/" the_file.xml
sed
sed -n '/<key name='\''enabled'\''/,/<\/key>/p' the_file.xml
Если вы предполагаете, что файл содержит правильный XML, вы можете использовать xmllint
из пакета libxml2-utils
и найти нужный элемент XML с помощью выражения XPath:
$ xmllint --xpath "/schemalist/schema/key[@name='enabled' and @type='b']" /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
<key name="enabled" type="b">
<summary>Enable remote access to the desktop</summary>
<description>
If true, allows remote access to the desktop via the RFB
protocol. Users on remote machines may then connect to the
desktop using a VNC viewer.
</description>
<default>false</default>
</key>
Другой способ получить желаемый результат — использовать XSL (eXtensible Stylesheet Language )и xsltproc
-, которые устанавливаются по умолчанию, если вы используете рабочий стол GNOME -для преобразования входного документа в желаемый вид. задокументируйте (вывод.)
Вот таблица стилей:
$ cat transform.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method='xml' omit-xml-declaration='yes' />
<xsl:template match="/schemalist/schema/key[@name='enabled']">
<xsl:copy-of select="." />
</xsl:template>
<xsl:template match='text()|@*'/>
</xsl:stylesheet>
Вот результат:
$ xsltproc transform.xsl input.xml
<key name="enabled" type="b">
<summary>Enable remote access to the desktop</summary>
<description>
If true, allows remote access to the desktop via the RFB
protocol. Users on remote machines may then connect to the
desktop using a VNC viewer.
</description>
<default>false</default>
</key>
$
Использование Perl:
#!/usr/bin/perl
use 5.010;
use strict;
use warnings;
use XML::LibXML;
my $filename='/home/emmmcl01/gschema.xml';
my $dom = XML::LibXML->load_xml(location => $filename);
foreach my $key ($dom->findnodes('/schemalist/schema/key')) {
my $desc = $key->findvalue('./description');
my $nm = $key->findvalue('./@name');
if ('enabled' eq $nm ) {
print $key;
}
}
Это решение выполняет итерацию по каждому элементу ключа, и когда оно находит ключ, имеющий описание, атрибут «named» которого равен «enabled», оно распечатывает элемент. Решение использует синтаксический анализатор Perl XML :XML ::LibXML, который, возможно, придется установить.