Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
Linux 提取2个子字符串之间的子字符串_Linux_String_Bash_Sed_Grep - Fatal编程技术网

Linux 提取2个子字符串之间的子字符串

Linux 提取2个子字符串之间的子字符串,linux,string,bash,sed,grep,Linux,String,Bash,Sed,Grep,在Bash中,我有一个变量,其中包含一个JSON对象作为字符串,例如: {“结果”:[{“名称”:“blah-1”,“版本”:“1.0”},{“名称”:“其他名称”,“版本”:“2b alpha”}]} 我是通过打电话给curl得到这个消息的 我想将版本字符串放入bash数组中,这样当我调用printf'%s\n'${versions[@]}“时,它会逐行打印每个版本字符串: 1.0 2b-alpha 这些版本字符串在JSON中的出现次数可以任意。我将如何执行此操作,可以使用纯bash完成,还

在Bash中,我有一个变量,其中包含一个JSON对象作为字符串,例如:

{“结果”:[{“名称”:“blah-1”,“版本”:“1.0”},{“名称”:“其他名称”,“版本”:“2b alpha”}]}

我是通过打电话给
curl
得到这个消息的

我想将版本字符串放入bash数组中,这样当我调用
printf'%s\n'${versions[@]}“
时,它会逐行打印每个版本字符串:

1.0
2b-alpha
这些版本字符串在JSON中的出现次数可以任意。我将如何执行此操作,可以使用纯bash完成,还是需要
grep
sed
以及该命令是什么样子的?

单向:

arr=($(echo "$x" | grep -oP '(?<="Version":")[^"]+' ))
单向:

arr=($(echo "$x" | grep -oP '(?<="Version":")[^"]+' ))
正如建议的那样,使用适当的
JSON
解析器(如
jq
)进行解析,以获得更好的可维护性。做点像

$ echo "$jsonString" | jq -r '.results[] | "\(.Version)"'
应将内容打印为

1.0
2b-alpha
printf '%s\n' "${jsonArray[@]}"
其思想是使用
jq
过滤器
.results[]|“\(.Version)”
选择结果下的所有节点,并提取结果下的
Version
的所有名称

要将其存储到数组,请使用

有关下载说明,请参阅第页。

根据建议,使用适当的
JSON
解析器,如
jq
进行解析,以提高可维护性。做点像

$ echo "$jsonString" | jq -r '.results[] | "\(.Version)"'
应将内容打印为

1.0
2b-alpha
printf '%s\n' "${jsonArray[@]}"
其思想是使用
jq
过滤器
.results[]|“\(.Version)”
选择结果下的所有节点,并提取结果下的
Version
的所有名称

要将其存储到数组,请使用


有关下载说明,请参阅第页。

如果只需要版本号,则不需要将curl的结果存储在变量中。您可以将curl的结果直接导入jq:

versions=($(curl 'http://server/path' | jq -r '.results[].Version'))

如果只需要版本号,则不需要将curl的结果存储在变量中。您可以将curl的结果直接导入jq:

versions=($(curl 'http://server/path' | jq -r '.results[].Version'))

如果要解析json,请使用json解析器。如果你想得够久,你就会意识到它是合乎逻辑的,是有道理的。使用
jq
解析
json
如果你想解析json,就使用json解析器。如果你想得够久,你就会意识到它是合乎逻辑的,是有道理的。使用
jq
解析
json
你可以使用
.results[].Version
你可以使用
.results[].Version