JSON要素のシーケンスを含むファイルがあります。
{ element0: "lorem", value0: "ipsum" }
{ element1: "lorem", value0: "ipsum" }
...
{ elementN: "lorem", value0: "ipsum" }
JSONをフォーマットして、読み取り可能な形式でファイルコンテンツを表示するシェルスクリプトはありますか?
this postを見てきたので、良い出発点だと思います!
私のアイデアは、ファイル内の行を繰り返してから:
while read row; do echo ${row} | python -mjson.tool; done < "file_name"
誰か他のアイデアはありますか?
ファイルからの結果をpython json tool 2.6以降にパイプします
cat 'file_name' | python -m json.tool
Python JSONツールを使用できます(Python 2.6+)が必要です。
例えば:
echo '{ "element0" : "lorem", "element1" : "ipsum" }' | python -m json.tool
それはあなたに与えるでしょう:
{
"element0": "lorem",
"element1": "ipsum"
}
発見する必要があるよりも長い時間がかかったとき、これは独自のエントリに値すると感じました。 docker inspect -f
のjson出力をきれいに印刷する簡単な方法を探していました。別の回答の一部として、Noufal Ibrahimによって上記で簡単に言及されました。
Jq Webサイトから( https://stedolan.github.io/jq/ ):
jqはJSONデータのsedに似ています-sed、awk、grep、friendsがテキストで遊ぶのと同じように簡単に構造化データをスライス、フィルター、マッピング、変換できます。
デフォルトでは色付きの出力を提供し、jq
にパイプするだけです。
cat file | jq .
例:
Pygmentize はキラーツールです。 こちらをご覧ください 私はpython json.tool with pygmentizeと組み合わせる
echo '{"foo": "bar"}' | python -m json.tool | pygmentize -g
他の同様のツールとインストール手順については、上記のリンクをご覧ください。
ライブデモは次のとおりです。
それらの束があります。私は個人的にこのエイリアスを.zshrc
pjson () {
~/bin/pjson.py | less -X
}
どこ 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))
コマンドラインでそれをパイプとして使用できます(curl http://.... | pjson
)。
OTOH、カスタムコードは負債なので、 jq があります。 Cで書かれており(したがって、PythonまたはNode)のような依存関係のない移植性があり、きれいに印刷するだけでなく、高速です。
すべてのLinuxシステムにインストールできるjq
パッケージを使用できます。以下のコマンドを使用してツールをインストールします。
# Redhat based systems(Centos)
yum install -y epel-release
yum install -y jq
# Debian based systems
apt install -y jq
その後、テキストストリームをjqツールにパイプできるようになります。
echo '{"test":"value", "test2":"value2"}' | jq
この回答が役立つことを願っています。
Mac OSでは、jq
をコマンドでインストールします。
$ brew install jq
次のような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
}
ショーンのソリューションがPython 3:
echo '{"foo": "bar"}' | python3 -m json.tool