Bash读取文件并将值从

问题描述:

任何想法如何读取文件并从文本中获取值?Bash读取文件并将值从

Let's说我有

Json info lastActiveTimes:{"707514313":1505584723,"100004389551456":1505591385},chatNotif:0}, a lot of more Json info. 

而且我想从开始到获得:要结束了,所以读取文件和刚刚从OSX

返回使用bash

{"707514313":1505584723,"100004389551456":1505591385} 

I'm

+1

使用'jq'(json查询)包解析json会更好。 (正如你可以在示例导致问题之前通过额外的json信息所看到的那样)。也就是说,PCRE的'sed'或'grep'可以处理检索大括号的内容。 –

+0

谢谢,我知道jq,但恐怕这个源不仅是json,而且也是html。 – paul

+0

[OP评论表明有多个json括号](https://*.com/questions/46258581/bash-read-file-and-get-values-from-to#comment79486880_46258713),(* ie *: '{...}'),因此这个问题很模糊,需要指定需要哪个括号。 – agc

随着GNU grep和Perl regular expression-P):

grep -Poz '(?<=Start:).*(\n)*.*(?= End)' file 

输出:

 
aaaaaaaaaabbbbbbbb 
ccccccc 
+0

无法使其工作,给了我一个grep命令错误,我现在用真实数据更新我的问题。谢谢 – paul

+0

我没有Perl定期expresion,任何想法如何做到这一点没有它? – paul

当你开始和结束之间有2nd line with start in it,你可以使用

sed -n '/Start:/,/End/p' file| sed '1s/.*Start://; $s/End.*//' 

UPDATE: 问题发生了变化,现在它可以是任何东西像

sed 's/.*\({[^}]*}\).*/\1/' file 

of

grep -Eo "{[^}]*}" file 
+0

无法使其工作,给了我一个grep命令错误,我现在用真实数据更新我的问题。谢谢 – paul

+0

因为在粘贴示例之前和之后有Json信息,所以不工作。我更新我的问题,对不起,不要在第一时间创建清晰。 – paul

+0

我看到你接受了类似问题的答案https://*.com/q/46262713/3220113所以我认为你可以自己解决剩下的问题。 –