新手請教 - Linux

Table of Contents

※ [本文轉錄自 Editor 看板 #1Od01Mhk ]

作者: asdrt (安靜) 看板: Editor
標題: [問題] 新手請教
時間: Thu Feb 9 13:38:27 2017

目前有一批資料 擷取下來是


{"id":"1da58d7f-ac5f-4e3b-b5b0-65b36c0de68f","macAddr":"04000246","data":"4e32352e30343636333432","buff":"2016-10-20T04:49:49.420Z","recv":"2016-10-20T04:49:4

9.000Z","extra":{"gwip":"172.16.5.15","gwid":"00001c497b3b8127","repeater":"00000000ffffffff","systype":4,"rssi":-121.2$"snr":-13.2}}

這樣為一 筆資料 但是我只想要裡面的 macAdrr , data , gwip 這裡面的資料

我的作法是資料抓下來後用 vim 讓她換行成


{
"id":"1da58d7f-ac5f-4e3b-b5b0-65b36c0de68f",
"macAddr":"04000246",
"data":"4e32352e30343636333432",
"buff":"2016-10-20T04:49:49.420Z",
"recv":"2016-10-20T04:49:49.000Z",
"extra":{"gwip":"172.16.5.15",
"gwid":"00001c497b3b8127",
"repeater":"00000000ffffffff",
"systype":4,
"rssi":-121.2,
"snr":-13.2}
}

再利用 grep , sed 等方式方式取出成單一資料 再用 paste > 變成多行資料

想請問的是
1. 換行這個工作可否直接用 sed 來做或是其他的指令來完成
2. 我有一個步驟是要把 4e32352e30343636333432 用 decode的方式轉回 text ,
目前也是土法煉鋼把資料取出後
(因為我只會用 grep 所以不知道怎麼把 data 去掉 orz )
再用 echo 的方式來做轉譯 再丟回去我的文件組合成我要的 csv (,分隔檔案)

抱歉 問題有點多
也請指點迷津
感謝

--


--

All Comments

Hedda avatarHedda2017-02-13
為啥覺得找個 ruby/python 之類的語言 再找個 json parser
基本上要做的事情就做完了
Kristin avatarKristin2017-02-14
然後插入換行用 sed 就能做了 sed 's/,/&\n/g'
上面是最簡陋的
Kyle avatarKyle2017-02-18
命令列可以用 jq 去解析檔案,但不一定比腳本語言簡單
Bethany avatarBethany2017-02-22
自己實際使用、比較看看,之後就知道那種方法比較合適
Connor avatarConnor2017-02-26
這是JSON格式 找JSON Parser處理比較方便
Eartha avatarEartha2017-02-26
感謝以上指教,因為本身沒有程式基礎,對linux也是趕鴨子上
架,所以只能慢慢摸索,再利用自己所認知的方式來解決
Zora avatarZora2017-03-03
這些部分都需要再多多改進的 感謝
Noah avatarNoah2017-03-04
然後這些資料是放在ubuntu 10.04 上面 所以我用 apt-get
無法安裝jq 來實現..
Hardy avatarHardy2017-03-05
jq 自己編譯就好了,jq 只用到標準 C 的功能
但對新手來說,編譯軟體可能過於困難...
Iris avatarIris2017-03-09
在 Linux 上有時還是要編譯軟體,學一下還蠻實用的
Agatha avatarAgatha2017-03-14
可以裝個 nodejs ,直接 eval 也行。
Rachel avatarRachel2017-03-14
cat file.txt | python -m json.tool 格式化輸出
Mason avatarMason2017-03-15
其實這類結構需求用 python 處理幾行可完成
Agatha avatarAgatha2017-03-20
剛剛測試一下 jq 非常好用,用語法不需要寫程式很方便