Как написать регулярное выражение, которое работает с многострочным текстом?
Есть список вывода в переменную вида:
ONLINE Yes
ONLINE Yes
ONLINE Yes
Нужно в баше в "если" запихать сверку на регулярном выражении, что вся переменная состоит только из таких строчек.
У меня получилось так: ^(ONLINE Yes($|\n))*$, на сайтике работает с ^ (начать сначала), а в баше не хочет:
if [[ "${V_CELL_DISK}" =~ ^(ONLINE Yes($|\n))*$ ]];
then
...
fi
Глянуть можно тут https://regex101.com/r/75lrTP/1
Ответы (2 шт):
Автор решения: Vadik Sirekanyan
→ Ссылка
На сайте вы проверяете регулярное выражение в соответствии со стандартом PCRE2, в Perl ваше регулярное выражение прекрасно работает, а в Bash \n не будет работать, используйте $'\n' вместо \n.
Например, так:
^(ONLINE Yes($|$'\n'))*$