Luc*_*nzo 58 shell command-line json
我有一个带有JSON元素序列的文件:
{ element0: "lorem", value0: "ipsum" }
{ element1: "lorem", value0: "ipsum" }
...
{ elementN: "lorem", value0: "ipsum" }
Run Code Online (Sandbox Code Playgroud)
是否有一个shell脚本来格式化JSON以便以可读的形式显示文件内容?
我看过这篇文章,我认为这是一个很好的起点!
我的想法是迭代文件中的行,然后:
while read row; do echo ${row} | python -mjson.tool; done < "file_name"
Run Code Online (Sandbox Code Playgroud)
有没有人有任何其他想法?
Sha*_*der 108
将结果从文件传输到python json工具2.6以后
cat 'file_name' | python -m json.tool
Run Code Online (Sandbox Code Playgroud)
Fon*_*one 50
当我花费的时间超过它应该发现的时间时,我觉得这应该是它自己的入口.我正在寻找一种简单的方法来打印json输出docker inspect -f.Noufal Ibrahim上面简要提到了另一个答案的一部分.
来自jq网站(https://stedolan.github.io/jq/):
jq就像是用于JSON数据的sed - 你可以用它来切片和过滤,映射和转换结构化数据,同样方便sed,awk,grep和朋友让你玩文本.
它默认提供彩色输出,你只需要管道jq.
例:
Nim*_*007 47
您可以使用Python JSON工具(需要Python 2.6+).
例如:
echo '{ "element0" : "lorem", "element1" : "ipsum" }' | python -m json.tool
Run Code Online (Sandbox Code Playgroud)
哪个会给你:
{
"element0": "lorem",
"element1": "ipsum"
}
Run Code Online (Sandbox Code Playgroud)
Rob*_*art 16
从 mac OS 10.15 终端我可以使用json_pp:
echo '{ "element0" : "lorem", "element1" : "ipsum" }' | json_pp
Run Code Online (Sandbox Code Playgroud)
Shu*_*ary 12
Pygmentize是一种杀手级工具.看到这个.我将python json.tool与pygmentize结合起来
echo '{"foo": "bar"}' | python -m json.tool | pygmentize -g
Run Code Online (Sandbox Code Playgroud)
对于其他类似工具和安装说明,请参阅上面链接的答案.
这是一个现场演示:
在 Mac 操作系统中,jq使用以下命令安装:
$ brew install jq
Run Code Online (Sandbox Code Playgroud)
您可以获得漂亮的打印 JSON,类似于:
$ curl -X GET http://localhost:8080/api/v1/appointments/1 | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 117 0 117 0 0 8404 0 --:--:-- --:--:-- --:--:-- 9000
{
"craeted_at": "10:24:38",
"appointment_date": "2019-02-08",
"name_of_doctor": "Monika",
"status": true,
"price": 12.5,
"id": 1
}
Run Code Online (Sandbox Code Playgroud)
有一堆他们.我个人在我的这个别名.zshrc
pjson () {
~/bin/pjson.py | less -X
}
Run Code Online (Sandbox Code Playgroud)
这里pjson.py是
#!/usr/bin/env python
import json
import sys
try:
input_str = sys.stdin.read()
print json.dumps(json.loads(input_str), sort_keys = True, indent = 2)
except ValueError,e:
print "Couldn't decode \n %s \n Error : %s"%(input_str, str(e))
Run Code Online (Sandbox Code Playgroud)
允许我在命令行中使用它作为管道(类似curl http://.... | pjson).
OTOH,自定义代码是一种责任,所以有jq,这对我来说看起来像黄金标准.它是用C语言编写的(因此是可移植的,没有像Python或Node这样的依赖项),它不仅仅是漂亮的打印而且速度很快.
您可以使用jq可以安装在所有 Linux 系统中的软件包。使用以下命令安装该工具。
# Redhat based systems(Centos)
yum install -y epel-release
yum install -y jq
# Debian based systems
apt install -y jq
Run Code Online (Sandbox Code Playgroud)
然后您将能够通过管道将文本流传输到 jq 工具。
echo '{"test":"value", "test2":"value2"}' | jq
Run Code Online (Sandbox Code Playgroud)
希望这个答案会有所帮助。
| 归档时间: |
|
| 查看次数: |
59923 次 |
| 最近记录: |