Linux bashで/proc/cpuinfoをJSONに変換する

Linux bashで/proc/cpuinfoをJSONに変換する

cat /proc/cpuinfoaの全項目をJSONに変換したいと思います"key" : "value"

可能ですか?私は\n各行を取得できるようにしたいので、文字列分解を使用しようとしています。その後、各行を使用できます:

しかし、改行文字は一貫性のない配列を生成するようです。

ベストアンサー1

簡単な方法で次のようにすることができます。

sed 's/\(.*\)\t:\(.*\)/"\1" : "\2"/' /proc/cpuinfo 

これにより、タブの前のすべての項目と一致し、コロンが続き、として保存され、\1コロンの後のすべての項目が一致してとして保存されます\2。代わりに、周囲に引用符があります。

ただし、これにより次のような結果が得られます。

"fpu    " : " yes"
power management:

タブの前に余分な空白がある項目には空白が含まれ、空の項目は無視されます。このバージョンのPerlは、次の問題を正しく処理します。

perl -F: -alpe 's/.*/"$F[0]" : "$F[1]"/' /proc/cpuinfo 

これにより、行が配列:に分割され(分割する文字を設定して自動分割がオンになり)、引用符の各面が印刷されます。 1行に2つ以上があると割れますが、そんなことは起こらないようです。ただし、ファイル内のすべての空白行も印刷されます。これを避けるためには、まずパイプしてください。@F-F-a@F:/proc/cpuinfogrep

grep . /proc/cpuinfo | perl -F: -alpe 's/.*/"$F[0]" : "$F[1]"/' /proc/cpuinfo 

または、行に以下が含まれている場合にのみ印刷してください:

perl -F: -alne 's/.*:.*/"$F[0]" : "$F[1]"/ && print' /proc/cpuinfo 

おすすめ記事