
Я хочу найти в файле все строки, не содержащие цифр, и придумал следующее регулярное выражение.
\D*/g
Что работает так, как мне нужно в этом онлайн-инструменте:https://regex101.com/#pcre, но когда я запускаю следующую команду:
grep -c "\D*/g" nonDistortResults.txt
Он возвращается 0
.
Файл имеет следующий формат:
2573
kitchenDoor 2573
2573
2573
2573
2574
2574
2574
2574
kitchenDoor 2574
2574
2574
2575
2575
2575
2575
2575
kitchenDoor 2575
2576
Поэтому в приведенном выше примере я ожидаю возврата 3
.
решение1
Вам необходимо адаптировать свой шаблон следующим образом:
grep -c \D nonDistortResults.txt
- Нам не нужен флаг «жадный», так как grep уже работает со строками.
- Кавычки здесь не требуются.
- Звездочка может быть любым количеством результатов, включая 0 (поэтому ее использование вернет true для каждой строки)
Если вам снова нужно использовать некоторые регулярные выражения Pearl (PCRE), вы можете взглянуть на опцию -P команды grep, но на странице руководства сказано:
-P, --perl-regexp
Интерпретировать ШАБЛОН как регулярное выражение Perl (PCRE, см. ниже). Это очень экспериментально, и grep -P может предупреждать о нереализованных функциях.