gpt4 book ai didi

bash - grep 查找一个词,如果匹配则获取括号内的内容

转载 作者:行者123 更新时间:2023-11-29 09:47:08 28 4
gpt4 key购买 nike

我有很多文件,通常如下所示。

    { 
key1:value1,
key2:value4
},
{
key1:value1,
key2:value4
},
{
key3:value3,
key5:value5
}

我想搜索一个键,比如 key5。如果 key5 存在,那么我 想打印括号内的所有内容。在这种情况下,它将是

    { 
key3:value3,
key5:value5
}

我不想在 context 之后和 context 之前用 grep 做,因为括号中的键可能不同。并且括号内的内容不在一行。

最佳答案

您可以为此使用带有自定义记录分隔符的 gnu-awk:

awk -v RS='{[^}]+}' 'RT ~ /key5/ {print RT}' file
{
key3:value3,
key5:value5
}

RT 表示通过 RS 模式匹配的文本。

另一种方法是使用 gnu-grep:

grep -zoP '{[^}]*?key5[^}]*}' file
{
key3:value3,
key5:value5
}

编辑:您还可以使用 perl:

perl -0ne 'print $1  . "\n"if /({[^}]*?key5[^}]*})/' file
{
key3:value3,
key5:value5
}

编辑 2:这是一个 BSD awk 解决方案:

awk -v RS='{' '/key5/{printf "%s", RS $0}' file
{
key3:value3,
key5:value5
}

关于bash - grep 查找一个词,如果匹配则获取括号内的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31595099/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com