regex – поиск только пар символов

У меня есть следующие данные, из которых я хочу извлечь только те строки, которые содержат только «bb». Не «b» или «bbb» или что-то еще просто «bb».

abb abbb aabbcc aabab abbbbc 

Теперь, когда я использую следующую комбинацию команд:

  • grep -f сбой в файле, отредактированном в Windows
  • Regex to match =, за которым следует новая строка, чтобы оба они были удалены
  • регулярное выражение с "locate"
  • `command. *` действует в родительском каталоге
  • Переименуйте последние 8 символов в имени файла
  • Как создать каталог во всех подкаталогах?
  •  cat file1 | grep "bb[^b] 

    Я получаю вывод как все строки в моем файле образца:

     abb abbb aabbcc aabab abbbbc 

    Ожидаемый я хочу – 🙁 Строки, содержащие только «bb»)

     abb aabbcc 

    Какое регулярное выражение может быть достигнуто?

    abbbabb недействителен. Я ищу строки, которые содержат только bb и никакой другой шаблон b . Строка будет содержать только два, последовательных b и никаких других символов b вообще.

  • Unix Case RegEx
  • Как использовать логический ИЛИ в поиске?
  • Извлечение пути подкаталога из частично известного каталога
  • Как найти файлы, содержащие новую строку в имени файла?
  • Как совместить * со скрытыми файлами внутри каталога
  • Как заменить слово новой строкой
  • 2 Solutions collect form web for “regex – поиск только пар символов”

    Я думаю, самый прямой способ:

     grep '^[^b]*bb[^b]*$' file1 

    Btw, для команд, таких как grep которые принимают аргумент имени файла, более эффективно выполнять

     grep '^[^b]*bb[^b]*$' file1 

    или

     grep '^[^b]*bb[^b]*$' < file1 

    (последний работает, если аргумент файла не поддерживается)

    чем

     cat file1 | grep '^[^b]*bb[^b]*$' 

    и часто более гибкими.

     grep '\(^\|[^b]\)bb\([^b]\|$\)' 

    или

     grep -E '(^|[^b])bb([^b]|$)' 

    То есть: поиск вхождения bb , которому предшествует либо начало строки, либо символ, отличный от b , за которым следует либо символ, отличный от b либо конец строки.

    Linux и Unix - лучшая ОС в мире.