0. 概述

有时出于各种原因,我需要在命令行处理 JSON 字符串,但是,大多数情况这些 JSON 字符串都不是格式化的,也就是连成一陀的,所以我需要格式化他们,本文就介绍两种在命令行格式化字符串的操作。

经过我长期的实践和摸索,我总结了两种方式,一种是无需安装其他工具,直接使用系统自带的 python 即可;另外一种强大一些,但是需要另行安装工具。

1. Python 格式化 JSON

在命令行中,可以通过 python 直接格式化 JSON,使用方式为:python -m "json.tool",完整的使用方式为:

  1. [root@liqiang.io]# curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | python -m "json.tool"
  2. ... ...
  3. "parents": [
  4. {
  5. "html_url": "https://github.com/stedolan/jq/commit/2065d6c3aa700742d4fabf11e1d9462119d8f104",
  6. "sha": "2065d6c3aa700742d4fabf11e1d9462119d8f104",
  7. "url": "https://api.github.com/repos/stedolan/jq/commits/2065d6c3aa700742d4fabf11e1d9462119d8f104"
  8. }
  9. ],
  10. "sha": "707022b0e5d2b1c7b8a55e3c4f4ab539e05a9086",
  11. "url": "https://api.github.com/repos/stedolan/jq/commits/707022b0e5d2b1c7b8a55e3c4f4ab539e05a9086"
  12. }
  13. ]

效果还可以,但是,比较平淡,没有高亮之类的操作。

2. jq 工具

另外一个不错的选择就是另行安装 jq 工具,如果使用的是 CentOS,可以直接通过 EPEL 源进行 YUM 安装,其他系统应该也有类似的包管理软件:

  1. [root@liqiang.io]# yum install -y jq

然后直接使用:

  1. [root@liqiang.io]# curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.'
  2. ... ...
图 1:jq 格式化 json

可以看到效果还是非常不错的。

3. Ref