2015-10-02 53 views
-1

我需要在瀏覽器中以查詢參數的形式打開bash命令的響應。將bash命令的響應轉換爲序列化的json字符串

這個想法是從我的員工計算機運行一個bash命令,並讓它在我的新庫存應用程序中打開一個網址,爲我完成剩下的工作。

現在我有它的工作只是系列。即:

inventoryme(){ 
    OUTPUT="$(system_profiler SPHardwareDataType | grep Serial)" 
    open "http://localhost:3000/?serial=${OUTPUT}" 
} 

這將打開:http://localhost.dev:3000/?serial=%20%20%20%20%20%20Serial%20Number%20(system):CENSORED

我可以清楚地解析這個在我的網頁應用程序方面,還是在bash一個更好的工作,但我很想轉的prsystem_profiler SPHardwareDataType整個響應成json字符串!

任何人都有一個很好的方法或建議呢?該命令將返回是這樣的:

Model Name: MacBook Air 
     Model Identifier: MacBookAir7,2 
     Processor Name: Intel Core i7 
     Processor Speed: 2.2 GHz 
     Number of Processors: 1 
     Total Number of Cores: 2 
     L2 Cache (per Core): 256 KB 
     L3 Cache: 4 MB 
     Memory: 8 GB 
     Boot ROM Version: MBA71.0166.B06 
     SMC Version (system): 2.27f2 
     Serial Number (system): CONSORED 
     Hardware UUID: CONSORED 
+0

使用'awk'或相似。 –

回答

0

幾種方式使用Perl做到這一點:

# JSON::PP should be available. JSON::XS is faster, but is not a core module 
perl -MJSON::PP -ne '/(\S.*):\s*(.*)/ and $data{$1} = $2; END { print encode_json(\%data) }' 

# If you don't have a JSON module installed 
perl -ne '/(\S.*):\s*(.*)/ and $json .= "\"$1\": \"$2\","; END { chop $json; print "{ $json }" }' 
相關問題