如今使用 json 或者 yaml 格式的配置文件愈來愈廣泛,而編寫 shell 腳本常常須要操做配置文件,這就產生一個新問題:如何操做這些格式的配置文件。本文先解決操做 json 文件的問題。下面列出常見的一些操做,其它操做能夠照此辦理。做者推薦的 Linux 發行版仍然是 Ubuntu,即便在 Ubuntu Cloud Image 中下面的操做均可以直接執行而不需安裝額外的包。python
以給 docker 添加 mirror 爲例,配置文件爲 json 格式,給 json 添加一個名爲 registry-mirrors
的屬性。docker
echo -e "import json;j = json.load(open('/etc/docker/daemon.json'));\nj['registry-mirrors']='$1';print(json.dumps(j))" | python3 > /etc/docker/daemon.json
仍是以 docker 配置文件爲例,把剛添加到 json 配置文件中的屬性刪掉shell
echo -e "import json;j = json.load(open('/etc/docker/daemon.json'));\nif 'registry-mirrors' in j: del j['registry-mirrors'];print(json.dumps(j))" | python3 > /etc/docker/daemon.json
繼續以 docker 配置文件爲例,讀取 json 文件查詢屬性的值json
echo -e "import json;j = json.load(open('/etc/docker/daemon.json'));\nif 'registry-mirrors' in j: print(j['registry-mirrors'])" | python3
其中 j
是 json.load
生成的對象,能夠獲取其中的任意屬性並進行處理。工具
cat /etc/docker/daemon.json | python3 -m json.tool
若是要對 key
排序輸出可添加 --sort-keys
參數code
cat /etc/docker/daemon.json | python3 -m json.tool --sort-keys
上面幾種操做已經覆蓋了大多數場景,沒有覆蓋的場景使用上面兩個工具也很容易解決。對象