如何使用BASH从JSON中提取特定文本

时间:2015-04-07 19:34:05

标签: json bash sed

我已将JSON结构复制粘贴到我的输入文件的.txt文件中(我将有很多这样的文件)。

我正在寻找“开始”和“结束”之间的“名称”文字,我的输入文件很大,我要提取的部分看起来像这样:

Here: "start",
        title: "Name",
        type: "end",
        words: "more words",

我尝试过以下但是没有用。

input.txt < sed -n '/^start",$/,/^type: "end"$/p' data > output.txt

谢谢。

2 个答案:

答案 0 :(得分:0)

data.txt中

...
Here: "start",
        title: "Name",
        type: "end",
        words: "more words",
...

Sed命令:

 $ sed -n '/start",$/,/ *type: "end",$/p' data.txt

输出:

Here: "start",
        title: "Name",
        type: "end",

^赢得了匹配起始线,因为那里是&#34;在这里:&#34;在它之前和&#34;结束&#34; $赢得不匹配结束,因为在最后一个引号之后有一个comman。

答案 1 :(得分:0)

您发布的样本输入就是您所需要的:

$ awk -F\" '/end/{print t} {t=$2}' file
Name

如果这还不够,那么请提出更具真实代表性的示例输入,其中包括您认为脚本难以处理的案例。 提取您想要的文本总是微不足道的,而且更难以提取您不想要的文本。