Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix sed/grep/awk:匹配txt中的json对象_Unix_Awk_Sed_Grep - Fatal编程技术网

Unix sed/grep/awk:匹配txt中的json对象

Unix sed/grep/awk:匹配txt中的json对象,unix,awk,sed,grep,Unix,Awk,Sed,Grep,我需要从控制台输出中提取json,如下所示: [main] Lin of log 1 [main] Lin of log 2 ... [main] Lin of log n { "jsonProperty1": "aString", "jsonNestedObject1": { ... }, ... "jsonPropertyN": "somethin

我需要从控制台输出中提取json,如下所示:

[main] Lin of log 1
[main] Lin of log 2
...
[main] Lin of log n
{
    "jsonProperty1": "aString",
    "jsonNestedObject1": {
        ...
    },
    ...
    "jsonPropertyN": "something"
}
[main] Lin of log n+1
...
[main] Lin of log m
我想把这个JSON对象写在一个“input.JSON”文件中,我如何使用awk、grep或sed等命令来实现呢


提前感谢您的帮助

请尝试以下操作:

awk '/^{$/{f=1}f{print; if(/^\}$/) f=0}' input > input.json

说明:当找到
{
时,设置了
f
。使用
f
时,将打印正确的行,但如果找到
}
f
将取消设置,并停止打印。如需进一步阅读,请查看以下sed解决方案:

sed -n '/{/,/^}/p' input > input.json

这句话的意思是“一般情况下,不要打印任何内容,但从一行开头的第一个开始括号到第一个结束括号,打印所有内容。”

我不知道为什么我会被否决,我认为更具建设性的做法是解释为什么你认为这个问题不好,请发表评论:)欢迎这么做!请向我们展示您迄今为止所做的尝试。顺便说一句,不是我的反对票。那里有很多省略号。“thisJSON对象”是指大括号和它们之间的文本吗?这些是源代码中唯一的大括号吗?那个街区里可能有花括号吗?如果源代码中还有其他JSON对象,您能告诉我们这一个与其他JSON对象的区别吗?@ThomasHansen谢谢!我不是一个shell编程专家,所以我做了一些研究,但是我找到的解决方案没有被采纳。我得到的最接近的是
awk'/{/,/}/'
,但我不知道为什么,它直到最后才匹配。我试过的其他方法都是一团糟,只匹配括号,而不是括号之间的文本:/@Beta谢谢你的精确性,是的,JSON对象我指的是括号和括号之间的文本,它们是源代码中唯一的花括号,它们是该块中的其他花括号,这是源代码中唯一的JSON。我试着在我的例子中尽可能地理解它,如果不够精确的话,很抱歉:)它完全有效!非常感谢你!你能解释一下这个是怎么工作的吗?很高兴听你这么说。我已经更新了一个解释。请考虑接受答案,完成了,非常感谢您的帮助!非常感谢你!有什么理由选择一种方案高于另一种方案,或者完全一样吗?@VirgilePetermann:有几个好的标准可以参考;在这种情况下,我认为您应该选择似乎更容易理解和使用的解决方案。