Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

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

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 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.