【发布时间】:2013-06-26 21:21:42
【问题描述】:
我需要从标准 bash 中的 JSON 获取key,并找到以下内容:
echo '{"first_key": "value", "second_key": "value2"}' | python -mjson.tool | grep 'first_key'
但这会返回:
"first_key": "value",
我怎样才能只返回value,即不是密钥,并删除引号和逗号。
谢谢。
【问题讨论】:
我需要从标准 bash 中的 JSON 获取key,并找到以下内容:
echo '{"first_key": "value", "second_key": "value2"}' | python -mjson.tool | grep 'first_key'
但这会返回:
"first_key": "value",
我怎样才能只返回value,即不是密钥,并删除引号和逗号。
谢谢。
【问题讨论】:
$ echo '{"first_key": "value", "second_key": "value2"}' | python -c 'import sys, json; print(json.load(sys.stdin)[sys.argv[1]])' first_key
value
【讨论】:
既然你把它标记为grep,这里有一个解决方案(尽管Ignacio's 解决方案是正确的方法):
echo "..." | grep -oP "(?<=\"first_key\": \")[^\"]+"
输出:
$ echo '{"first_key": "value", "second_key": "value2"}' | grep -oP "(?<=\"first_key\": \")[^\"]+"
value
【讨论】:
GNU grep 和后者OSX grep。