grep: шаблон соответствия в определенном положении

Мне нужно сопоставить шаблон с grep , только если он начинается в позиции 16. Предположим, я хочу совместить строку ' pattern' (начиная с пробела).

Следующее должно соответствовать

 bla bla bla bla pattern 

тогда как следующее не должно совпадать, потому что шаблон поиска не начинается в pos. 16:

 bla bla bla bla foo foo pattern 

Я попытался использовать это регулярное выражение

 egrep '.*\{15\} pattern' 

но это, похоже, не работает по желанию.

Может кто-нибудь предложить решение?

One Solution collect form web for “grep: шаблон соответствия в определенном положении”

Я думаю, что вы ищете:

 grep -E '^.{15} pattern' 

Это будет хорошо в большинстве случаев использования. Однако обратите внимание, что он не будет «соответствовать» только части pattern , но все до того, как оно будет включено в матч. Вы увидите это путем выделения grep (если --color задан напрямую или включен в псевдоним оболочки). Без цвета это повлияет на grep -o который печатает только согласованную часть. Например:

 $ echo 'bla bla bla bla pattern' | grep -Eo '^.{15}( pattern)' bla bla bla bla pattern 

Чтобы избежать этого с помощью GNU grep, вы можете использовать выражение perl с внешним видом. Например:

 $ echo 'bla bla bla bla pattern' | grep -Po '(?<=^.{15}) pattern' pattern 

Это соответствует только pattern .

  • Сохранять счет из файла журнала
  • grep --exclude не исключает мой файл
  • Извлечение списка шаблонов, которые выводятся из другой команды
  • Как удалить строку из тега в сценарии оболочки?
  • как совместить точный субдомен с grep, игнорируя другие
  • Почему результат grep зависит от пути к папке?
  • Использование фильтра grep
  • Команда Grep в сценарии оболочки
  • Список перекрывающих экземпляров шаблона
  • Сколько текста grep / egrep потребляет каждый раз?
  • Различное использование grep
  • Linux и Unix - лучшая ОС в мире.