Как игнорировать разрывы строк в Windows версии GNU grep? - PullRequest
0 голосов
/ 01 февраля 2011

windows xp, GNU grep из http://gnuwin32.sourceforge.net/packages/grep.htm

У меня есть файл с разрывами строк:

test 
  123

Я пытаюсь использовать GNU grep для поиска этого файла по шаблону регулярных выражений "test.*\n*.*12"

grep -G "test.*\n*\.*12" C:\myfile_with_linebreaks.txt

но безуспешно.

Какие параметры или шаблон регулярного выражения мне нужно использовать, чтобы найти строку с разрывом строки?

1 Ответ

0 голосов
/ 01 февраля 2011

Я часто использую [^\0] (каждый символ, кроме NUL), так как большинство строк не содержат символ NUL. В противном случае я собираю группу символов, включающую . и \n:

grep -G "test[.\n]*12" C:\

Если, напротив, вы хотите ровно один разрыв строки между тестом и 123, я бы использовал не жадный оператор *:

grep -G "test.*?\n.*?12" C:\

Знак вопроса ? после оператора * будет ограничивать этого оператора. Без ? он будет продолжаться, пока не найдет последнее следующее совпадение; с ? он остановится в первом следующем матче.

Кроме того, возможно, вам явно необходимо включить расширенные регулярные выражения POSIX с ключом -E:

grep -E "test.*?\n.*?12" C:\
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...