如何使用grep提取大括号之间的内容?

如何使用grep提取大括号之间的内容?,grep,Grep,我想使用grep只提取大括号之间的一个部分 我的日志文件:* { * "path": "/root/power.doc" } 如何提取大括号之间的内容?grep不支持范围。您可以使用awk: awk '/\{/,/\}/ {if($0 ~ /path/){print $0}}' kylian.log * "path": "/root/power.doc" 编辑1

我想使用grep只提取大括号之间的一个部分

我的日志文件:*

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

如何提取大括号之间的内容?

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"

您的日志文件看起来像JSON文件上的diff,使用jq之类的JSON解析器直接访问该文件可能会更容易!但我的行动是有限的。