Grep: повтор символов в двоичном режиме? - PullRequest
2 голосов
/ 29 октября 2011

Рассмотрим следующий пример, где grep используется для поиска в двоичном режиме:

$ echo "test blabla test ertytey" | grep -ao tes
tes
tes

Я могу добавить «точку» в шаблон поиска, чтобы «соответствовать любому символу» и показатьследующий символ после совпадения:

$ echo "test blabla test ertytey" | grep -ao tes.
test 
test 

... или более точек, чтобы соответствовать последующим символам:

$ echo "test blabla test ertytey" | grep -ao tes...
test b
test e

Допустим, теперь я хочу сопоставитьколичество символов ( скажем, 30 , №: 3) после матча;и я прочитал из man grep: {n} Предыдущий элемент соответствует ровно n раз. .Поэтому я пытаюсь:

$ echo "test blabla test ertytey" | grep -ao tes.{3}
$

... ничего не происходит;

$ echo "test blabla test ertytey" | grep -ao tes.\{3\}
$

... ничего не происходит;

$ echo "test blabla test ertytey" | grep -ao tes[.]\{3\}
$

... ничего не происходит;

$ echo "test blabla test ertytey" | grep -ao tes\[.\]\{3\}
$

... ничего не происходит.

Любые идеи о том, каким будет правильный синтаксис для соответствия "любому символу" (точка) заданное число раз в grepбинарный режим?

Заранее большое спасибо за любые ответы,
Приветствия!

РЕДАКТИРОВАТЬ: как указывает ответ @aix ', изначально я допустил ошибку, указав 30 символовдля поиска, тогда как строка в примере недостаточно длинна :) Теперь изменили ее на более разумный счет 3 :)

Ответы [ 2 ]

4 голосов
/ 29 октября 2011

Во-первых, {30} соответствует точно тридцати символов, и ваша строка недостаточно длинна.

Во-вторых, вашему grep может потребоваться флаг -E, чтобы включитьрасширенный синтаксис (мой делает).

Для меня работает следующее:

$ echo "test blabla test ertytey" | grep -aoE 'tes.{20}'
test blabla test ertyte
1 голос
/ 29 октября 2011

echo "test blabla test ertytey" | grep -aoE 'tes.{3}l'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...