我的curl方法返回一个非结构化的json,如同 -
result":{"fields":[{"position":1,"tokenized":false,"startOffset":0,"endOffset":0,"primary":false,"fieldBusinessName":"id"...
现在从那个json我想知道初级的价值是真是假。 由于返回的json已将所有单词连接起来,我正在考虑将字符放在" primary":和" fieldBusinessName"之间。 。这将解决我的问题。是否可能。
注意:它是一个未解析的json,并且所有单词都连接在一起
答案 0 :(得分:0)
您可以通过简单的模式匹配来实现:
#!/bin/bash
temp="${1##*primary\"\:}"
result="${temp//\,*/}"
echo "primary is: $result"
exit 0
用法:
$ ./primary.sh 'result":{"fields":[{"position":1,"tokenized":false,"startOffset":0,"endOffset":0,"primary":false,"fieldBusinessName":"id"...'
结果:
primary is: false
答案 1 :(得分:0)
使用gnu awk
:
awk -F: '$1=="\"tokenized\""{print $2}' RS='[,{}]' file
false
答案 2 :(得分:0)
像Bash或Zsh这样的shell具有正则表达式匹配功能。
这是一个Bash解决方案:
json="$(curl url)"
[[ $json =~ primary\":([a-z]+),\"fieldBusinessName ]] && echo ${BASH_REMATCH[1]}