如何使用shell脚本从一组字符中提取字符

时间:2014-07-04 19:02:53

标签: shell

我的curl方法返回一个非结构化的json,如同 -

result":{"fields":[{"position":1,"tokenized":false,"startOffset":0,"endOffset":0,"primary":false,"fieldBusinessName":"id"...

现在从那个json我想知道初级的价值是真是假。 由于返回的json已将所有单词连接起来,我正在考虑将字符放在" primary":和" fieldBusinessName"之间。 。这将解决我的问题。是否可能。

注意:它是一个未解析的json,并且所有单词都连接在一起

3 个答案:

答案 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]}