shell程式設計學習之使用jq對json資料進行提取

2022-05-04 03:42:12 字數 3335 閱讀 2094

目錄現在先準備json串,如下kumufengchun.json:

"
如下test.json:

[, ]
jq . kumufengchun.json
或者

cat kumufengchun.json | jq .
輸出如下:

[root@localhost ~]$ cat kumufengchun.json | jq .

是已經格式化的json資料串,在linux系統下還高光顯示,key和value用不同的顏色表示,如下圖:

語法:jq '.' ,這裡key是欄位名稱

]語法:jq '.' ,這裡value是陣列的索引整數值

[root@localhost ~]$ jq '.company[1]' kumufengchun.json 

"google"

[root@localhost ~]$ jq '.company[2]' kumufengchun.json

"alibaba"

語法:jq '.[s:e]',返回的是陣列或者列表的index從s開始(包括s)到e結束(不包括e)

]也可以省略開始的index,只有結束的index,如下,仍然是不包括結束index的值:

]也可以省略結束的index,只有開始的index,如下,輸出到最後:

[root@localhost ~]$ jq '.company[1:]' kumufengchun.json 

[ "google",

"alibaba"

]

開始的索引也可以是負數,表示從後邊倒著數,從-1開始數:

[root@localhost ~]$ jq '.company[-2:]' kumufengchun.json 

[ "google",

"alibaba"

]

語法:jq '.'

]語法: jq '.key1,.key2'

如果是陣列,用中括號括起來要輸出的鍵值,鍵值先寫誰,先輸出誰

語法:jq . | .

[root@localhost ~]$ jq '.|.name' test.json 

"json"

"xml"

[root@localhost ~]$ echo 1 | jq '(.+2)*5' 

15[root@localhost ~]$ echo | jq '(.+2)*5'

1520

25

如果是字串是求的字串的長度,如果是陣列則求得是陣列的長度

[root@localhost ~]$ cat kumufengchun.json | jq '. | length'122

72285

3

語法: jq keys

[root@localhost ~]$ cat kumufengchun.json | jq 'keys'

[ "age",

"city",

"company",

"country",

"date",

"email",

"name"

]

輸出陣列的keys:

[root@localhost ~]$ cat kumufengchun.json | jq '.company | keys'

[ 0,

1,2]

[root@localhost ~]$ cat kumufengchun.json | jq 'has("email")'

true

[root@localhost ~]$ cat kumufengchun.json | jq 'has("address")'

false

參見文件

Linux學習之shell程式設計一

獲取變數的值可以使用 var或者 後者可以預防變數讀取錯誤。command 可以獲得命令的執行結果。1.shell指令碼的書寫格式 1 bin bash 2 程式說明 包括日期,作者,程式作用等資訊 3 path bin sbin usr bin usr sbin usr local bin usr...

Linux學習之shell程式設計二

shell script 的預設變數 0,1.代表後接的引數個數 代表 1,2,3,4之意 代表 1c 2c 3c 4 其中c為分隔符,預設為空格 shift 可以偏移變數號碼,比如shift 或者shift 2可以將變數 向左移動1次或2次 bin bash filename shell05.sh...

Linux學習之Shell指令碼程式設計

一.shell指令碼定義 shell是系統的使用者介面,提供了使用者與核心進行互動操作的一種介面。它接收使用者輸入的命令並把它送入核心去執行。實際上shell是乙個命令直譯器,它解釋由使用者輸入的命令並且把它們送到核心。shell翻譯成殼的意思,它是包裹在linux核心外層的,乙個可通過一系列的li...