Я часто использую [^\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:\