Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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获取两个单词之间的文本_Unix_Sed - Fatal编程技术网

Unix Sed获取两个单词之间的文本

Unix Sed获取两个单词之间的文本,unix,sed,Unix,Sed,如何获取“total”之间的文本:和,“issues”,简而言之,我需要从下面的文件中获取3004编号 Cat test1 {"expand":"schema,names","startAt":0,"maxResults":2,"total":3004,"issues": 从上面的文件中提取3004的确切命令是什么?如果您真的想使用sed,那么 sed -e 's/.*\"total\":\([0-9]*\).*/\1/' 我们应该做到这一点。 如果您想解析JSON,请使用JSON解析器。

如何获取
“total”之间的文本:
,“issues”
,简而言之,我需要从下面的文件中获取
3004
编号

Cat test1

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

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

如果您真的想使用
sed
,那么

sed -e 's/.*\"total\":\([0-9]*\).*/\1/'
我们应该做到这一点。
如果您想解析JSON,请使用JSON解析器。

因为您标记了
unix
,我想您没有
grep
PCRE
。您可以使用下面的
perl
一行程序,不过正如其他人所建议的那样,最好使用
json
解析器

perl:
grep和PCRE:
$echo'{“expand”:“schema,names”,“startAt”:0,“maxResults”:2,“total”:3004,“issues”:

grep-oP'(?听起来像是XY问题。您正在尝试解析JSON吗?
$ echo '{"expand":"schema,names","startAt":0,"maxResults":2,"total":3004,"issues":' | 
perl -nle 'print $1 if /(?<="total":)([0-9]+)(?=,"issues")/'
3004
$ echo '{"expand":"schema,names","startAt":0,"maxResults":2,"total":3004,"issues":' | 
perl -nle 'print $1 if /(?<="total":)([0-9]+)/'
3004
$ echo '{"expand":"schema,names","startAt":0,"maxResults":2,"total":3004,"issues":' | 
grep -oP '(?<="total":)[0-9]+'
3004