Используйте инструмент, поддерживающий XML -, при работе с XML. Например, в xsh , оболочке XML ::LibXML , вы можете добиться результата с помощью
open logback-spring.xml ;
for //logger[@level='DEBUG'][appender-ref/@ref='logstash']
set @level 'TRACE' ;
save :b ;
Если ваш XML содержит объявления пространств имен, код будет немного сложнее.
После некоторого тестирования я нашел решение :sox
Вместо использования alsaloop или arecord/aplay я настроил простой конвейер с помощью sox:
mkfifo /tmp/pipe
rec -b 32 -r 96000 --endian little -t raw -e signed-integer /tmp/pipe &
sox -b 32 -r 96000 --endian little -t raw -e signed-integer /tmp/pipe -t raw -e signed-integer -p rate 48000 | AUDIODEV="bluealsa:DEV=XX:XX:XX:XX:XX:XX" play -b 32 -r 96000 --endian little -t raw -e signed-integer -p &
это создает именованный канал в /tmp/pipe
и rec
заполняет его вводом sox
передискретизирует аудиоданные и play
воспроизводит их