segítség sed ügyben

Hello mindenki!

Sajnos nem nagyon értem még a sed logikáját, de igyekszem. Ezt pld. magam okumláltam össze.
Kérdés van-e egyszerűbb megoldás?

Leszedem a szerverről a fájllistát.

wget --no-remove-listing http://repo.vivaldi.com/archive/rpm/x86_64

Ez sajnos html fájl.
Akkor dumpoljunk.

lynx --dump index.html > list.txt

Majd keressük meg a legfrissebb verziót.

cat list.txt | sed -n '/file:/,/$/p' | sed -n '/snapshot-/,/./p' | awk -vFS='-' '{print $3}' | sort -rV | head -n1

Nekem így is megfelel, de a tanulás végett kérdés van-e egyszerűbb shell megoldás. Egyelőre a perlt még hanyagoljuk.

S ha igen, kérnék hozzá magyarázatot is hogy meg is értsem.

Hozzászólások

Segítenék, de kéne pár infó, mivel a linked nem működik (ERR_CONNECTION_TIMED_OUT):

1. Mi a cél? (Miből mi legyen? Formátum példa!)
2. Hová akarod felhasználni a kinyert adatot? (változóba, csak kiírva, adatbázisba megy, stb. - kicsit más a szigorúság az egyes eseteknél)

UPDATE: https az a http, azért nem megy... Na, mindjárt nézem.
UPDATE2:

egy soros változat, ami kiírja a legfrissebb verziót:

http://pastebin.com/8CyFwCaa

Függőségek: curl, sed, grep, cut, sort, head

Mondtam már, hogy utálom a hup formázási bénázásait?

--
Coding for fun. ;)

Köszi. Ez nem semmi. Bárcsak érteném is mi mit csinál. (A seden belül)

Érdekel engem ez a Vivaldi de sajnos a saját scriptjük annyiban hibás, hogy elfelejtették létrehozni a szerverükön az urpmi -nek szükséges metaadat fájlt. Nevezetesen a media_info mappában lévő hdlist.cz fájlt.
S ezt távolról nem tudom megoldani, mivel nincs írási jogom a szerverre. Maximum mindent letölthetnék, és a saját gépemen elkészíthetném, utána meg elküldhetném nekik. No de ez csak a jelenlegi helyzetre vonatkozna, s abban a pillanatban amint feltesznek egy új kiadást, kezdhetném elölről.

Az urpmi meg nem dolgozik a yum féle repomd.xml fájlból.

Igazából nekik csak annyit kéne csinálniuk hogy "genhdlist2 *.rpm" Ekkor elkészül a szerverükön az, ami miatt nem működik jelenleg a frissítés.
Ezt már bejelentettem bugnak, de hanyagolják. :(

Így már a kapott verziószámot össze tudom vetni a feltelepítettel, majd egy if then páros megoldja az ellenőrzést s vagy letölti az új változatot, vagy nem tesz semmit mivel nincs új változat.

Közben kísérleteztem, aztán ezt hoztam össze.

curl -ks https://repo.vivaldi.com/archive/rpm/x86_64/ | sed -n '/snapshot/,/$/p' | cut -d "-" -f3 | sort -nr | head -n1

Van ugyan egy apró szépséghibája a kiírásnak, de a végeredmény szempontjából nincs jelentősége. S ezt legalább értem. :)

Észrevételek: egy sed scriptben lehet több sed utasítás, pontosvesszőkkel szeparálva írhatod őket egymás után.

Ha pipe-olni kell mindenféle sed, grep, cut parancsokat, egyszerűbb egyetlen awk scripttel megoldani mindent.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

A Vivaldin már régen túl vagyok. Frankón működik.

Viszont miután a disztróm csak a Firefox-ESR-t adja, így nekem kell mindig levadásznom az utolsó kiadást.
Volt is egy frankó scriptem rá, de a Mozilla megváltoztatta a dolgokat, és most gond van.

Egyelőre itt tartok:


curl -ks http://download.cdn.mozilla.net/pub/firefox/releases/ | sed -e 's/<[^>]*[>]//g; s/\//g; /^\s*$/d; s/.$//' | head -n -12 | sort -V

Sajnos megint belekerült a végére pár szöveg. Ebből bányásznám ki a legfrissebb kiadást.
Csak az egész számok az érdekesek. Ez béta:41.0b9, ez nem tudom mi:41.0.2-funnelcake53
A további szűrést hogy oldhatnám meg?


links2 -dump "http://download.cdn.mozilla.net/pub/firefox/releases/" | sed -n "/Dir/{s/.*Dir[[:space:]]\+//;/^[^0-9]/d;p}" | sort -n | tail -n 1

links2 -dump "http://download.cdn.mozilla.net/pub/firefox/releases/" | sed -n "/Dir/{s/.*Dir[[:space:]]\+//;/^[^0-9]/d;/[[:alpha:]]/d;p}" | sort -n | tail -n 1

Nem tudom mire gondoltál pontosan.