1

Temat: Filtrowanie danych pobranych z www z wykorzystaniem sed

W związku z tym, że to mój pierwszy post na eko.one.pl wypada się przywitać.
Więc witam wszystkich forumowiczów.
Na początku podziękowania dla autora projektu za zbudowanie i utrzymywanie funkcjonalnego serwisu o openwrt.
Przez rok od kiedy korzystam z tego serwisu nie potrzebowałem dodatkowych informacji - wszystko udawało się znaleźć, ale nastał ten moment kiedy muszę zapytać.
Mam następujący problem.
Pobieram z internetu stronę (https z wykorzystaniem curl) i zapisuje lokalnie.
Interesuje mnie jedna linia, którą udało mi się wyodrębnić - mam więc plik z jedną linią danych w postaci:
       aResult : [{"PARAMETR1":"jegowartosc1","PARAMETR2":"jegowartosc2","PARAMETR3":""poniedzia\\u0142ek\, 23:55","itd.
Potrzebny mi skrypt z wykorzystaniem "sed" który pobierze:
{jegowartosc1}
{jegowartosc2}
{poniedzia\\u0142ek\, 23:55}
a w zasadzie chociaż:
{jegowartosc1}
Pytanie jak z wykorzystaniem "sed" pobrać dane z zakresu między
{       aResult : [{"PARAMETR1":"} a {","PARAMETR2":"jegowartosc-2","PARAMETR3":""poniedzia\\u0142ek\, 23:55","itp}
lub jak wyciąć z linii
{       aResult : [{"PARAMETR1":"} i {","PARAMETR2":"jegowartosc-2","PARAMETR3":""poniedzia\\u0142ek\, 23:55","itp}

Nadmienie tylko, że co jakiś czas linia ulega modyfikacji, ale {"PARAMETR1":} {"PARAMETR2":} {"PARAMETR3":} się w tej linii zawsze pojawiają, tylko z innym {jegowartosc1}, {jegowartosc-2} lub {poniedzia\\u0142ek\, 23:55}.
Pozostanie jeszcze kwestia zastąpienia polskich znaków {\\u0142} na {l} ale z tym sobie poradzę.

Mam nadzieję, że zrozumiale opisałem problem. Będę wdzięczny za pomoc.

TL-WDR3600 Gargoyle 1.6.2.1, 16MB FLASH, eUSB SSD 2GB, USB RELAY, 1-wire

2

Odp: Filtrowanie danych pobranych z www z wykorzystaniem sed

Czy dobrze widzę, to są dane w formacie JSON?
W gruncie rzeczy, do parsowania JSON masz gotowe narzędzia, takie jak jshn albo moduł do Lua - lua-json.

3

Odp: Filtrowanie danych pobranych z www z wykorzystaniem sed

echo ' aResult : [{"PARAMETR1":"jegowartosc1","PARAMETR2":"jegowartosc2","PARAMETR3":""poniedzia\\u0142ek\, 23:55' | awk -F[:,] '/jegowartosc[0-9]/ {print $3}'

W najprymitywniejszy sposób. Generalnie cat/cut/sed/awk lub gotowiec jak to jest json.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

4

Odp: Filtrowanie danych pobranych z www z wykorzystaniem sed

Bardzo dziękuje za szybką odpowiedź.
Co to dokładnie za format, to nie wiem, niestety nie mój poziom wiedzy.
Generalnie chciałem to wykonać prymitywnie, ale skoro mogą być na to gotowce, to wieczorkiem postaram się zgłębić temat json (jeden wyraz i google wie co szukać) i poeksperymentować. O wynikach postaram się napisać.

TL-WDR3600 Gargoyle 1.6.2.1, 16MB FLASH, eUSB SSD 2GB, USB RELAY, 1-wire