簡體   English   中英

Bash腳本-將LIST輸出省略為JSON

[英]Bash Script - irsend LIST Output to JSON

我有以下命令:

irsend LIST lgtv ""

輸出如下:

irsend: 00000000000010ef KEY_POWER
irsend: 0000000000008877 KEY_1
irsend: 00000000000048b7 KEY_2
irsend: 000000000000c837 KEY_3
irsend: 00000000000028d7 KEY_4
irsend: 000000000000a857 KEY_5
irsend: 0000000000006897 KEY_6
irsend: 000000000000e817 KEY_7
irsend: 00000000000018e7 KEY_8
irsend: 0000000000009867 KEY_9
irsend: 00000000000008f7 KEY_0

如何獲取每一行並獲取代碼和密鑰名稱,並將其輸出為JSON格式?

例如:

[
    {"code": "00000000000010ef", "key": "KEY_POWER" },
    {"code": "0000000000008877", "key": "KEY_1" },
    {"code": "00000000000048b7", "key": "KEY_2" }
]

此處的關鍵是-R命令行選項,該選項允許一次讀取一行。 使用您的輸入,以下調用將產生顯示的結果(被截斷):

$ jq -c -R 'split(" ") | {code: .[1], key: .[2]}' input.txt
{"code":"00000000000010ef","key":"KEY_POWER"}
{"code":"0000000000008877","key":"KEY_1"}
{"code":"00000000000048b7","key":"KEY_2"}

您可能要考慮標記輸入字符串,例如,如果您的jq具有splits/1

[splits(" +")] | {code: .[1], key: .[2]}

注意, splits/1產生一個流,而split/1產生一個數組。

如果希望將結果作為單個數組,則可以將上述內容通過管道jq -s .jq -s .

以AWK為例:

irsend LIST lgtv "" | awk 'BEGIN{print "["}{{printf("{'"'"'code'"'"' : '"'"'%s'"'"', '"'"'key'"'"', '"'"'%s'"'"'}\n",$2,$3)}END{print "]"}'

瘋狂的'"'"'構造確保確實輸出了' 使用雙引號比較容易(並且使用JSONier):

irsend LIST lgtv "" | awk 'BEGIN{print "["}{{printf("{\"code\" : \"%s\", \"key\", \"%s\"}\n",$2,$3)}END{print "]"}'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM