Создайте функцию bash в вашем файле .bash_rc
function getJsonVal () {
python -c "import json,sys;sys.stdout.write(json.dumps(json.load(sys.stdin)$1))";
}
Затем
$ curl 'http://twitter.com/users/username.json' | getJsonVal "['text']"
My status
$
Вот такая же функция, но с проверкой ошибок.
function getJsonVal() {
if [ \( $# -ne 1 \) -o \( -t 0 \) ]; then
cat <<EOF
Usage: getJsonVal 'key' < /tmp/
-- or --
cat /tmp/input | getJsonVal 'key'
EOF
return;
fi;
python -c "import json,sys;sys.stdout.write(json.dumps(json.load(sys.stdin)$1))";
}
Где $ # -ne 1 обеспечивает как минимум 1 вход, а -t 0 убедитесь, что вы перенаправляетесь из канала.
Приятное вещь об этой реализации заключается в том, что вы можете получить доступ к вложенным значениям json и получить json взамен! =)
Пример:
$ echo '{"foo": {"bar": "baz", "a": [1,2,3]}}' | getJsonVal "['foo']['a'][1]"
2
Если вы хотите быть действительно фантастическим, вы могли бы довольно распечатать данные:
function getJsonVal () {
python -c "import json,sys;sys.stdout.write(json.dumps(json.load(sys.stdin)$1, sort_keys=True, indent=4))";
}
$ echo '{"foo": {"bar": "baz", "a": [1,2,3]}}' | getJsonVal "['foo']"
{
"a": [
1,
2,
3
],
"bar": "baz"
}