Вы можете использовать xsltproc
для обработки файлов XML с помощью сценариев xslt
, также известных как таблицы стилей. Это будет включать как скрипт xslt, так и управляющий скрипт bash. Например:
drompem.xslt
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="ServiceArea">
<xsl:if test="count(*)>0">
<ServiceArea>
<xsl:copy-of select="node()"/>
</ServiceArea>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
dropem.sh
#!/bin/bash
cat <<EOF | xsltproc dropem.xslt - | tail -n +2
<ALL>
$(cat)
</ALL>
EOF
Фактическая команда тогда будет
./dropem.sh < infile > outfile
Примечания: сценарий xslt
включает один элемент «шаблона», который соответствует вашей ServiceArea узлов и условно (если у него есть дочерние элементы) копирует его в результат.
Входные данные должны быть заключены в пару закрывающих тегов, поскольку xsltproc
обрабатывает только одно дерево XML. Обертка превращает ваш файл данных в единое дерево. Обертка не сохраняется для вывода, который снова является списком поддеревьев ServiceArea.
Однако вывод обрезается, чтобы избежать преамбулы Xml ...
и пустой строки, которую xsltproc
не может избежать.
Преимущество этого подхода в том, что он менее чувствителен к формату строки входного файла. Недостатком является то, что он использует xslt
, который является менее распространенным языком.
Звук не связан с дисплеем, поэтому нет, вы не можете отключить звук с помощью дисплея. Но вы можете отключить звук по приложению. Простой способ - запустить графический интерфейс pavucontrol
: он показывает регуляторы громкости для воспроизведения и записи для каждого приложения, в котором открыто соединение PulseAudio.
В качестве альтернативы, если вы контролируете способ запуска приложения, скажите ему не связываться с существующим сервером PulseAudio.
PULSE_SERVER=none vlc /path/to/sound.ogg