Nowe posty

clip Jaką dystrybucje polecacie pod mój sprzęt? (0)
Wczoraj o 21:45:38
clip Jaka dystrybucja pod mon sprzęt? (0)
Wczoraj o 21:43:55
xx BIOS nie widzi dysku z Linuxem (2)
2019-09-14, 10:41:31
xx Problem z antiX wersja live (0)
2019-09-12, 20:56:49
xx Serwer do Nauki (5)
2019-09-05, 07:35:50
cheesy pozycjonowanie (0)
2019-09-03, 13:54:08
xx iptables (1)
2019-09-03, 12:29:53
xx Co najpierw - przeczytać książkę i później obejrzeć film czy odwrotnie (0)
2019-08-30, 10:34:44
xx Lubuntu 19.04 problem z wklejeniem tekstu do ssh (1)
2019-08-28, 18:10:20
xx Migracja GRUB2 (0)
2019-08-24, 12:30:46

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

Offline 1709

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