Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
sed、JSON和花括号_Json_Bash_Sed_Curly Braces - Fatal编程技术网

sed、JSON和花括号

sed、JSON和花括号,json,bash,sed,curly-braces,Json,Bash,Sed,Curly Braces,我有一个文件,在JSON数据之前包含一些文本。 我试图去掉文本,只保留JSON,因此我使用: sed -n '/{"data"/,$p' myfile.txt 此命令的结果在终端中运行良好-它只返回JSON,但当我使用以下命令将输出推送到文件时: sed -n '/{"data"/,$p' myfile.txt > output.json 然后output.json仍然有一些文本。我明白,我有一个问题,正确地摆脱卷曲牙套和sed治疗我的牙齿{data as a regex,但我不知道如

我有一个文件,在JSON数据之前包含一些文本。 我试图去掉文本,只保留JSON,因此我使用:

sed -n '/{"data"/,$p' myfile.txt
此命令的结果在终端中运行良好-它只返回JSON,但当我使用以下命令将输出推送到文件时:

sed -n '/{"data"/,$p' myfile.txt > output.json

然后output.json仍然有一些文本。我明白,我有一个问题,正确地摆脱卷曲牙套和sed治疗我的牙齿{data as a regex,但我不知道如何避免这种情况。

经过进一步调查,我发现生成原始myfile.txt JSON+某些文本的脚本不是我的脚本,而是添加了特殊字符。我猜这些字符存在于文件中的事实使系统认为这是一个二进制文件,因此我有问题

当我执行cat-v output.json时,我可以看到额外的文本,如果我只执行cat output.json,则不会显示这些文本

作为一种解决方法,我修改了原始脚本,不添加一些额外的文本

使用修改后的脚本,生成的myfile.txt可以用sed解析,您的上述建议非常有效


感谢所有做出贡献并花时间帮助我的人。

请编辑你的Q,包括一组可以说明问题的JSON。不要使用猜测;-不要使用面向行的工具来操作结构化数据。有一些很好的JSON工具可以正确理解输入格式,注意不要使用切记。@Shelleter-这是一个很好的例子,说明我的myfile.txt:我只想获取JSON数据。@tripleee-我知道:但首先我需要从一个包含非JSON文本的文件中提取JSON数据。尽管sed没有成功,但一个简单的解决方法是awk'/^\{data/{p=1}p'myfile.txt>output.json