0

如何在"total": 和之间获取文本, "issues",简而言之我需要3004从下面的文件中获取数字。

Cat test1

{"expand":"schema,names","startAt":0,"maxResults":2,"total":3004,"issues":

3004从上述文件中获取的确切命令是什么?

4

2 回答 2

0

既然你标记了unix我猜你没有grepwith PCRE。您可以使用以下perl单行代码,但正如其他人建议的那样,最好使用json解析器。

perl:

$ echo '{"expand":"schema,names","startAt":0,"maxResults":2,"total":3004,"issues":' | 
perl -nle 'print $1 if /(?<="total":)([0-9]+)(?=,"issues")/'
3004

如果你没有很多"total":,那么以下就足够了:

$ echo '{"expand":"schema,names","startAt":0,"maxResults":2,"total":3004,"issues":' | 
perl -nle 'print $1 if /(?<="total":)([0-9]+)/'
3004

grep with PCRE:

$ echo '{"expand":"schema,names","startAt":0,"maxResults":2,"total":3004,"issues":' | 
grep -oP '(?<="total":)[0-9]+'
3004
于 2013-07-23T00:28:39.970 回答
0

如果你真的想用sed,比

sed -e 's/.*\"total\":\([0-9]*\).*/\1/'

应该做的伎俩。如果要解析 JSON,请使用 JSON 解析器。

于 2013-07-22T22:49:51.130 回答