Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: parsowanie plikow  (Przeczytany 3571 razy)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2763
  • 1709
    • Zobacz profil
parsowanie plikow
« dnia: 2014-04-19, 20:33:20 »
Zrobiłem sobie plik

 wget "https://www.dropbox.com/sh/8kq9gxdu5krmipb/YdLGo4-El7/pliki/AppCool" --output-document=test.xml
coś w rodzaju xml, ale nie do końca jest to xml.

Próbowałem na początku użyć xmllint --shell conf.xml
ale z powyższego powodu się sypie.
Za pomocą " grep " ładnie sobie wyszukałem linie do parsowania
ale dalej mam problem  
$j("#pyxl6512436918313739892").text("AppCool-v.2.tar.xz".em_snippet(40, 0.750000));
1. ) Czy jest jakiś sposób by wydobyć słowo w drugim cudzysłowie?
Sposób maskowania cudzysłowia """" dla cut nie działa
sed'a i awk'a nie znam a man chyba raczej nie strawie, jeśli wogóle coś strawie,
ponieważ jest to na tyle ciężkie że potrzebuje widzieć przykłady jak to działa.

2. ) chciałbym wydobyć linki z bardzo dlugiej linijki xml,
które są w nawiasach zaraz za
div class="filename-col">
ale może uda mi się za pomocą  xmllint, aczkolwiek
nie jestem przekonany co do xmllint ponieważ jest to kolejna "zależność",
natomiast sed i awk jest zainstalowany chyba w kazdym linuxie,
choć proste ani czytelne to to nie wygląda.

EDYTOWANE:
Ad.1)
Chyba się z tym cudzysłowiem uporałem w cut
$ cat test.xml | grep "em_snippet" | grep "AppCool-v" |  cut -d'"'  -f4
AppCool-v.2.tar.xz
AppCool-v.3.tar.xz
druga i trzecia linijka to wynik jaki chciałem uzyskać z pliku
( czyli czwarty fragment tekstu miedzy cudzysłowiami )
Wcześniej mi nie działało bo używałem przykładowo cut w ten sposób
( czyli używałem " zamiast '  )
 cut -d " " -f 1-1
i też działa, ale nie działa ze znakami specjalnymi.

EDYTOWANE
O to moje rozwiązanie, aczkolwiek nie jest ono idealne :(

cat wiadomo, wyświetla plik
grep wyszukuje poszukiwaną linie , awk pozbywa się pewnych znaków xml albo innych ( tutaj powstają wiersze wyników )
grep ogranicza wynik to linków
grep ogranicza znowu wynik do pewnej nazwy
uniq usuwa powtorzenia

Wolałbym zbudować skrypt który miałbym pewne funkcje ułatwiające życie
zaczołbym od funkcji określającej miejsce szukanego "czegoś",
a potem mozna by stworzyć coś w rodzaju cut  "od" , "do" lub może inne jakieś zasady.
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.