Регулярное выражение соответствия Shellscript

у меня был только фиктивный -приемник и никакого звука после обновления с debian 9 до debian 10

aplay -lсбой, сообщение об ошибке при открытии 99 -pulse.conf

я создал /etc/alsa/conf.d/99-pulse.confс содержимым, взятым из установки Xubuntu:

# PulseAudio alsa plugin configuration file to set the pulseaudio plugin as
# default output for applications using alsa when pulseaudio is running.
hook_func.pulse_load_if_running {
    lib "libasound_module_conf_pulse.so"
    func "conf_pulse_hook_load_if_running"
}

@hooks [
    {
        func pulse_load_if_running
        files [
            "/usr/share/alsa/pulse-alsa.conf"
        ]
        errors false
    }
]

это решило мои проблемы

0
10.05.2021, 03:18
1 ответ

GNU grepподдерживает три типа регулярных выражений :Basic, Extended (ERE )и Perl (PCRE ). В GNU grepERE не обеспечивают функциональности по сравнению с базовыми, но некоторые символы имеют особое значение, например знак плюс. Источник :справочная страница.

\dничего особенного в ЭРЭ не означает; это просто персонаж d. Чтобы выразить цифры, используйте [[:digit:]]или старый [0-9](. Интересно, существуют ли кодировки символов, в которых [0-9]не совпадает с[[:digit:]]).

Ваше выражение работает как PCRE, хотя:

if echo $var | grep -Pq '^\d+[MG]$';
then
    echo "match"
else
    echo "no match"
fi

Обратите внимание на опцию -Pвместо -E.

Похоже, что POSIXgrepне поддерживает PCRE . Однако я не читал определения POSIX ERE.

4
28.07.2021, 11:33

Теги

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