Как дать шаблон для новой строки в grep?
Как дать шаблон для новой строки в grep? Новая строка в начале, новая строка в конце. Не регулярное выражение путь. Что-то вроде n.
5 ответов:
grepшаблоны сопоставляются с отдельными линиями, поэтому шаблон не может соответствовать новой строке, найденной во входных данных.однако вы можете найти пустые строки, как это:
grep '^$' file grep '^[[:space:]]*$' file # include white spaces
попробовать
pcregrepвместоgrep:pcregrep -M "pattern1.*\n.*pattern2" filenamethe
-Mопция позволяет ему соответствовать по нескольким строкам, так что вы можете искать новые строки, как\n.
вы можете использовать этот способ...
grep -P '^\s$' file
-Pиспользуется для регулярных выражений Perl (расширение POSIXgrep).\sсоответствует пробелам; если за ними следует*, Он также соответствует пустой строке.^соответствует началу строки.$соответствует концу строки.
как временное решение (без использования непереносимую
-P), вы можете временно заменить символ новой строки в другую и изменить его обратно, например:grep -o "_foo_" <(paste -sd_ file) | tr -d '_'в основном он ищет точное совпадение
_foo_здесь_означает\n(т.__=\n\n). Вам не нужно переводить его обратно наtr '_' '\n', так как каждый шаблон будет напечатан в новой строке в любом случае, поэтому удаление_достаточно.