Контекст соответствующего регулярного выражения

Я использую egrep с опцией -o , чтобы просто получить соответствующую часть строки, например

 cat /usr/share/dict/words | egrep -o '(aa|ii)' 

Теперь я хотел бы увидеть некоторый контекст матча, т. Е. Несколько символов слева и справа. Один из способов добиться этого –

 cat /usr/share/dict/words | egrep -o '.{3}(aa|ii).{2}' 

Есть ли лучший (более эффективный и элегантный) способ? (Я egrep опциями командной строки egrep , но не нашел их для этой цели.)

One Solution collect form web for “Контекст соответствующего регулярного выражения”

Вы могли бы сделать что-то вроде:

 $ echo 'aabiicaa' | perl -lne ' while (/aa|ii/g) {print substr($`,-3)."[$&]".substr($'\'',0,2)}' [aa]bi aab[ii]ca iic[aa] 
  • Копирование XML-контента между двумя тегами из одного файла в другой
  • Не работает «+» в синтаксисе regex grep
  • Как игнорировать ссылки grep из файла?
  • буфер grep для вывода ранее выполненной команды
  • Файлы Cat 2 и избегайте дублирования строк
  • Как вернуть 0, если шаблон сопоставлен с файлом?
  • Как проверить, имеет ли файл уже строку с содержимым?
  • Удалить все строки текста, которые не являются всеми числами
  • Подсчитайте количество вхождений определенного числа перед каждой строкой в ​​linux
  • Извлечение текстовых блоков на основе вывода grep
  • Как оптимизировать «grep'-and-save»?
  • Linux и Unix - лучшая ОС в мире.