Shell使用grep和sed命令提取json數據中指定字段的值


示例:

1.有一個example.txt文件,文件內容如下:

{“err_code”: 200,"err_msg": "this is no error", “status”: 1, “dev_name”: “mylinux”, “dev_id”: 123}

2.如果我們想要獲取dev_id字段的值,可以在命令行下使用如下一行命令:

cat example.txt | sed 's/,/\n/g' | grep "dev_id" | sed 's/:/\n/g' | sed '1d' | sed 's/}//g'

命令解釋:

(1)第一個sed命令的意思是將json數據中的“,”替換為換行符“\n”,這樣該串數據就變為每一行一個字段的內容,即按逗號分隔數據串。

(2)第二個grep命令的意思是查找“dev_id”關鍵字,並單列出來。

(3)第三個sed命令的意思是將(2)中的結果再次按冒號“:”進行分隔。

(4)第四個sed命令的意思是將(3)中的結果,刪除第一行內容,即刪除“dev_id”行。

(5)最后一個sed命令的意思是將最后的花括號“}”用空字符替換,最終得到我們想要的值。

3.如果我們想把上述結果存進變量里使用的話,可以使用下面的命令:

dev_id=$(cat example.txt | sed 's/,/\n/g' | grep "dev_id" | sed 's/:/\n/g' | sed '1d' | sed 's/}//g')
echo $dev_id


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM