Почему на сайте регулярка работает, а в grep не работает?
Регулярное выражение на сайте находит что мне надо, а когда пытаюсь его использовать в grep то не находит ничего.
Пример нас сайте regex101.com (там выставлен PCRE? что должно соответствовать синтаксису регулярок в rgep в случае с параметром -P)
grep запускал с разными параметрами вот примеры:
grep -a -E "[0-9]{4}-[0-9]{2}-[0-9]{2}.*keywrd[\s\S]*?[0-9]{4}-[0-9]{2}-[0-9]{2}" /home/user1/test1.txt
grep -a -P "[0-9]{4}-[0-9]{2}-[0-9]{2}.*keywrd[\s\S]*?[0-9]{4}-[0-9]{2}-[0-9]{2}" /home/user1/test1.txt
сама регулярка:[0-9]{4}-[0-9]{2}-[0-9]{2}.*keywrd[\s\S]*?[0-9]{4}-[0-9]{2}-[0-9]{2}
текст-пример для поиска
какой-то ненужный текст неважно
ываотыволдаптфдп
2019-06-10 промежуточный нужный текст : FDGHDSH:keywrd, промежуточный нужный текст
ещё какойто нужный текст
.конец нужного текста
--------------кусок неподходящего---------------------------
2022-07-10 промежуточный текст : FDGHDSH:keynotwrd, промежуточный нужный текст
ещё какойто текст
.конец текста
-------------- конец куска неподходящего---------------------------
2022-08-10 промежуточный нужный текст : FDGHDSH:keywrd, промежуточный нужный текст
ещё какойто нужный текст
.конец нужного текста
2021-06-10 ненужный текст
какой-то ненужный текст неважно
ываотыволдаптфдп
что я выяснил: в обычной регулярке выражение [\s\S]* находит любые пробельные и непробельные символы, но в регулярках grep'а не работают слеши в квадратных скобках.
Попробовал использовать поиск через .*, но grep построчно обрабатывает и и регулярка .* спотыкается о перевод строки, попробовал grep с параметром -z чтобы игнорировал все переводы строк и представлял весь текст как одну строку - тоже не помогло, вот пример модифицированной команды grep -a -z -P "[0-9]{4}-[0-9]{2}-[0-9]{2}.*keywrd.*[0-9]{4}-[0-9]{2}-[0-9]{2}" /home/user1/test1.txt вообще ничего не находит.
