Как я могу grep две вещи, где есть опция -w?

У меня есть json- файл, откуда я хочу получить значение двух элементов, которые находятся в массиве с помощью grep . Предположим, я пытаюсь получить данные из значений foo и bar , проблема в том, что bar также соответствует megabar поэтому мне нужно grep его с параметром -w .
Проблема возникает, когда вы пытаетесь найти их в одно и то же время, поскольку я должен grep для одного значения ИЛИ другого.
Из этого вопроса мне удалось немного приблизиться к тому, что я искал, но мой результат был примерно таким:

 grep -E '(foo|-w bar)' file "foo": "59766", "foo": "59770", "foo": "59774", "foo": "59778", "foo": "59782", "foo": "59786", 

Любая идея о том, как это сделать?

  • grep с регулярным выражением
  • vim regex для поиска строк, содержащих string1 AND string2
  • mv жалуется на стандартный ввод в конвейере, который фильтрует имя файла с помощью grep
  • Проблема с разрешением экрана в Fedora 17 в Oracle VirtualBox 4.2
  • Как исправить ошибку на жестком диске, связанную с usb?
  • Как обрабатывать Linux RAID0 и Windows с чередованием динамических томов на одном и том же жестком диске?
  • Классификация дистрибутивов Linux
  • Как перенести существующую систему Linux в раздел LVM
  • Как сопоставить литерал '*' с sed?
  • Найдите кучу gps-файлов в папке для окончательного расстояния, выведите список расстояний
  • Как загружаются initramfs, если он находится на файловой системе, которую он должен разблокировать?
  • vi создание файлов подкачки перед созданием нового файла
  • 2 Solutions collect form web for “Как я могу grep две вещи, где есть опция -w?”

    Граница слова имеет аналогичный эффект -w , но может использоваться как часть выражения.

    «\ Ь»
    Сопоставьте пустую строку с краем слова.
    […]
    '\ <'
    Сопоставьте пустую строку в начале слова.
    '\>'
    Сопоставьте пустую строку в конце слова.

    Чтобы соответствовать bar только тогда, когда это целое слово, но где угодно (в том числе внутри более длинных слов):

     grep -E 'foo|\<bar\>' 

    Учитывая, что foo будет использоваться в том же контексте, что и foo, а также соответствует полному слову, самый простой способ – сделать:

     grep -E -w '(foo|bar)' file 
    Linux и Unix - лучшая ОС в мире.