cat /proc/cpuinfo
aの全項目を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/cpuinfo
grep
grep . /proc/cpuinfo | perl -F: -alpe 's/.*/"$F[0]" : "$F[1]"/' /proc/cpuinfo
または、行に以下が含まれている場合にのみ印刷してください:
。
perl -F: -alne 's/.*:.*/"$F[0]" : "$F[1]"/ && print' /proc/cpuinfo