Linuxコマンドでの処理結果をJSON形式で出力する方法

この記事では、Linuxコマンドの処理結果をJSON形式で出力する方法について詳しく解説します。具体的なコード例とその解説、そして実際の応用例を4つ以上取り上げます。

目次

LinuxとJSON

Linuxはオープンソースのオペレーティングシステムであり、多くのIT専門家や開発者が使用しています。一方、JSON(JavaScript Object Notation)は、データ交換のフォーマットとして広く使われているもので、そのシンプルさと可読性から多くのアプリケーションで好まれています。

基本的な方法

Linuxコマンドの結果をJSON形式で出力するためには、jqというコマンドラインツールを使用します。このツールは、JSONデータを操作するための強力なツールとして知られています。

echo '{"name":"tanaka", "age":30}' | jq .

上記のコマンドは、シェルスクリプトでのJSON文字列の出力例です。`echo` コマンドでJSON形式の文字列を出力し、その後に `jq` で整形しています。

コマンドの結果をJSON形式で出力

df -h | tail -n +2 | awk 'BEGIN {print "["} {print "{\"filesystem\":\""$1"\",\"size\":\""$2"\",\"used\":\""$3"\",\"avail\":\""$4"\",\"use\":\""$5"\",\"mounted\":\""$6"\"},"} END {print "]"}' | sed '$s/},/}/'

このコマンドは、ディスクの使用状況を表示する`df -h`コマンドの結果をJSON形式で出力するものです。

応用例

1. ユーザー情報のJSON出力

getent passwd | awk -F: '{print "{\"username\":\""$1"\",\"uid\":\""$3"\",\"gid\":\""$4"\",\"home\":\""$6"\",\"shell\":\""$7"\"},"}' | sed '$s/},/}/'

このコマンドは、システム上のすべてのユーザー情報をJSON形式で出力します。

2. プロセス情報のJSON出力

ps aux | awk 'BEGIN {print "["} NR>1 {print "{\"user\":\""$1"\",\"pid\":\""$2"\",\"cpu\":\""$3"\",\"mem\":\""$4"\",\"command\":\""$11"\"},"} END {print "]"}' | sed '$s/},/}/'

上記のコマンドは、実行中のプロセス情報をJSON形式で出力します。

3. ネットワークインターフェイス情報のJSON出力

ip -j a

このコマンドは、`ip` コマンドを使用して、すべてのネットワークインターフェイスの情報をJSON形式で出力します。

4. システムログの特定のエントリをJSON形式で抽出

grep "error" /var/log/syslog | awk '{print "{\"date\":\""$1" "$2"\",\"log\":\""$0"\"},"}' | sed '$s/},/}/'

上記のコマンドは、`/var/log/syslog`から”error”を含むログエントリをJSON形式で抽出します。

まとめ

Linuxのコマンドラインツールを使用して、さまざまな情報をJSON形式で簡単に出力することができます。特に、データの整理や分析、また他のツールやプログラムとの連携を考える際には非常に便利です。

created by Rinker
オライリージャパン
¥3,080 (2024/10/03 14:06:48時点 Amazon調べ-詳細)

コメント

コメントする

目次