Отображать строки, когда цифры повторяются в одной строке

Вы были на 99%, очень близко, просто:

grep '^[Oo]c\{2\}' filename

или эквивалент:

grep -E '^[Oo]c{2}' filename

Регулярные выражения

  • как вы знаете ^ [Oo] c , курсор ^ соответствует началу, и любой из символов в [] соответствует
  • вы были очень близки с c {2} , где вы хотели сопоставить предыдущий символ c , ровно два раза.
  • однако grep по умолчанию интерпретирует базовые регулярные выражения, которые не интерпретируют { как метасимвол для использования с этим типом сопоставления, поэтому мы меняем его на \ { и \} , чтобы он распознал его
  • в качестве альтернативы вы можете включить расширенные регулярные выражения, чтобы избежать обратной косой черты: grep -E '^ [Oo] c {2}' filename

Если это так не совпадает, возможно, скопируйте образец содержимого вашего теста filename , который действительно включает то, что вы пытаетесь сопоставить, и обновите вопрос, чтобы отобразить его, на случай, если есть что-то еще, что мы пропустили.

0
09.03.2019, 15:27
1 ответ

POSIXly:

grep '\([0-9]\{3\}\).*\1'

Напечатает строки, содержащие 3 десятичных цифры, за которыми следует последовательность из 0 или более символов, за которыми следуют те же 3 цифры.

Чтобы ограничить шаблон перед первой запятой:

grep '^[^,]*\([0-9]\{3\}\)[^,]*\1'
2
28.01.2020, 02:32

Теги

Похожие вопросы