Как извлечь содержимое между фигурными скобками с помощью grep?

#grep

#grep

Вопрос:

Я хотел бы использовать grep для извлечения только одной части между фигурными скобками

Мой файл журнала:*

      {
*         "path": "/root/power.doc"
     }
  

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

Комментарии:

1. Ваш файл журнала выглядит как разница в файле JSON, возможно, было бы проще использовать анализатор JSON, такой как jq, для прямого доступа к файлу.

2. действительно! Но мои действия ограничены.

Ответ №1:

grep не использует диапазоны. Вы могли бы использовать awk вместо:

 awk '/{/,/}/ {if($0 ~ /path/){print $0}}' kylian.log
*         "path": "/root/power.doc"
  

РЕДАКТИРОВАТЬ 1:

Вот измененный файл для тестирования:

 $ cat kylian.log 
*         "path": "/root/power_before.doc"

    --- before
        after
    @@ -1,4  1,4 @@
     {
*    -    "mode": "0010",
*         "mode": "0030",
*         "path": "/root/power.doc"
     }
*         "path": "/root/power_after.doc"
  

И вот результат, когда я запускаю свой awk против него:

 $ awk '/{/,/}/ {if( $0 ~ /path/){print $0}}' kylian.log
*         "path": "/root/power.doc"