извлечь значения между двумя строками

Очевидно, вы настроили шрифт для конкретного экземпляра приложения, а не для класса приложения. Экземпляр и класс являются понятиями X-ресурсов . Параметр командной строки -nameустанавливает имя экземпляра (по умолчанию на имя исполняемого файла ); имя класса всегдаURxvt(плюс Rxvtиспользуется как запасной вариант ).

В именах ресурсов X обычно имена классов начинаются с прописной буквы, а имена экземпляров — со строчной.

Чтобы ваши настройки применялись всегда, установите URxvt.fontвместо urxvt.fontи т. д.

1
07.12.2019, 12:38
2 ответа

Предполагая, что XML-документ правильно сформирован (в настоящее время в нем отсутствуют пять закрывающих тегов ), вы можете использовать xmlstarletдля получения значений для всех entitlementsузлов в документе, например:

$ xmlstarlet sel -t -v '//entitlements' -nl file.xml
600000001,600000080
600000300

Чтобы получить значение, относящееся к конкретномуoptionID:

$ xmlstarlet sel -t -v '//assignedOption[optionID=1000929]/entitlements' -nl file.xml
600000300
1
27.01.2020, 23:29

Не хватает изящества xmlstarlet, но этот perlподход возвращает требуемый результат

$ perl -ne 'while(m/<entitlements>(.*?)<\/entitlements>/g){print $1," "}' file.xml
600000001,600000080 600000300

awkподход

$ awk -F\< '{for(a=1;a++<NF;){if($a~/^entitlements>/){print substr($a,14)}}}' file.xml
600000001,600000080
600000300

grepподход

$ grep -o '<entitlements>[0-9,]*' file.xml|grep -o '[0-9,]*'
600000001,600000080
600000300
1
27.01.2020, 23:29

Теги

Похожие вопросы