在Shell腳本中,我們常常需要解析JSON數(shù)據(jù)。而awk是一種非常方便的文本處理工具,也可以用來解析JSON數(shù)據(jù)。
awk -F '[:,]' '{for (i=1; i<=NF; i++) {if ($i ~ /"name"/) {name=$(i+1)} else if ($i ~ /"age"/) {age=$(i+1)} else if ($i ~ /"email"/) {email=$(i+1)}}} END{print name,age,email}' json.txt
上面這段代碼是用awk解析JSON數(shù)據(jù)的一個例子。其中,-F '[:,]'
表示將冒號和逗號作為分隔符;{for (i=1; i<=NF; i++) {if ($i ~ /"name"/) {name=$(i+1)} else if ($i ~ /"age"/) {age=$(i+1)} else if ($i ~ /"email"/) {email=$(i+1)}}}
表示根據(jù)JSON數(shù)據(jù)的格式,遍歷每個字段,并將它們的值存儲在相應(yīng)的變量中;END{print name,age,email}
表示在讀取完整個JSON數(shù)據(jù)后,輸出解析得到的結(jié)果。
總的來說,雖然awk不是專門用來解析JSON數(shù)據(jù)的工具,但由于它靈活、強(qiáng)大,加上一些小技巧,也可以用來解析JSON數(shù)據(jù)。