Transformace tabulky v .php souboru (přehození sloupců)

Gooo

Dobrý den

Řeším domácí úkol a popravdě netuším, jak na to. Mám odkaz, který příkazem wget stáhnu do složky. Jedná se o tabulku v HTML formátu a soubor je .php.
Tabulka má 4 sloupce a úkol zní, že mám sloupce prohodit (sloupec na druhém místě mám přesunout na první a čtvrtý na druhý) a zároveň mám seřadit data vzestupně dle data ve druhém sloupci (druhý sloupec jsou datumy).

Nedaří se mi najít správný nástroj, kterým bych tuto operaci zvládl udělat. V podkladech mi přišel jako vhodný nástroj "cat", kterým zobrazím soubor (a vyjede mi ona HTML tabulka). Tak jsem zkoušel nástroj "cut" ve formátu:
Kód: [Vybrat]
cut -d' ' -f1 a doufal jsem, že se mi zobrazí první sloupec. Vhodným vybráním sloupců bych alespoň uměl první část a nějak vyfiltruji data, které mě zajímají. Jako volbu oddělovače jsem za -d vybral mezeru a tudíž mi to vyhodilo nesmysl. Protože se ale jedná o HTML tabulku, nevím jaký vhodný oddělovač vybrat.

Možnosti tedy nyní jsou:
  • Transformovat "nějak" soubor .php do txt, kde budou sloupce odděleny specifickým znakem. Pak v txt udělat úpravy a překonvertovat to do .php?
  • Umět najít nějaký vhodný oddělovač již v .php souboru?
  • Udělat to úplně nějak jinak (nejpravděpodobnější)?

Popravdě, mohu si ten soubor hodit do calcu, převedu do požadovaného formátu a pak z něj udělám .php a nikdo nic nepozná, ale nějak bych rád to zkusil takhle. Googlím už pár dnů a nic mě nenapadá. Poradí někdo?



#

Re:Transformace tabulky v .php souboru (přehození sloupců)
« Odpověď #2 kdy: 19. 04. 2014, 22:00:11 »
sort a sloupec + awk a je to doma :) somozrejme cest je vice treba pres grep nebo cokoliv jinyho chces

Re:Transformace tabulky v .php souboru (přehození sloupců)
« Odpověď #3 kdy: 19. 04. 2014, 22:43:53 »
Misto wgetu bych pouzil "lynx" s parametrem -dump. To prekonvertuje HTML tabulku do vhodneho formatu.
Pak bych to prohnal pres while. Neco jako:

lynx -dump $url | while read sloupec1 sloupec2 sloupec3 sloupec4; do
   echo $sloupec2 $sloupec4 $sloupec1 $sloupec3
done


Tonda

  • *****
  • 630
    • Zobrazit profil
    • E-mail
Re:Transformace tabulky v .php souboru (přehození sloupců)
« Odpověď #4 kdy: 20. 04. 2014, 11:32:08 »
A zadání je, že to musí být pomocí bash a Linuxových utilit nebo proč to chceš dělat takhle? Parsovat HTML pomocí regulárních výrazů je docela zoufalost. Tohle bych prostě naprogramoval v nějakém vyšším jazyce podle toho co umíš (v mém případě by to byla Java) pomocí vhodných komponent - nějaká http klient a html parser.


Franta <xkucf03/>

Re:Transformace tabulky v .php souboru (přehození sloupců)
« Odpověď #5 kdy: 20. 04. 2014, 12:46:45 »
Není potřeba nic moc programovat.

Stažení: wget
Transformace: xsltproc
(pokud to bude nevalidní HTML hnůj, tak tam ještě vložíš HTML tidy, aby to opravilo a dalo se to parsovat)

Kód: [Vybrat]
wget -O - http://… | tidy … | xsltproc šablona.xsl > výstup.xml # nebo výstup.txt
Tobě stačí si napsat jednoduchou XSLT šablonu, která najde tu tabulku (podle pořadí, identifikátoru, třídy atd.) a vypíše sloupečky tak, jak potřebuješ.

Gooo

Re:Transformace tabulky v .php souboru (přehození sloupců)
« Odpověď #6 kdy: 20. 04. 2014, 22:04:04 »
No, predmet ma nazev administrace systemu a prakticky je to jen o linuxu. Zadani zni:
Tato data obsahují HTML tabulku se jmény, e-maily, městy a daty přihlášení studentů k nějakému kurzu.
Pomocí dostupných unixových nástrojů transformujte získaná data do podoby:
Jméno <email>: datum
Soubor seřaďte podle datumu..
Výsledný soubor opět publikujte na webu do Vašeho podadresáře.

takze princip je udelat to skrze putty na skolnim serveru.

Jimm

Re:Transformace tabulky v .php souboru (přehození sloupců)
« Odpověď #7 kdy: 20. 04. 2014, 22:10:10 »
V tom případě bys měl projít doporučenou literaturu a naučit se to udělat, nebo zadání počítá s tím že to někdo na Rootu udělá za tebe?

h7

Re:Transformace tabulky v .php souboru (přehození sloupců)
« Odpověď #8 kdy: 20. 04. 2014, 23:08:02 »
V zadání tak trochu cítím "použijte sort, awk, sed apod.", ale to mi přijdou zrovna na tohle celkem nevhodné nástroje. Co je to dostupný UNIXový nástroj? Pokud máš přístup k internetu, tak je dostupné prakticky cokoli, co lze stáhnout, použít zdarma a funguje pod UNIXem. Jinak pro tohle se hodí něco, co obsahuje HTML parser (nebo něco, co z toho udělá validní XML a pak XML parser). Tedy nějaký vyšší programovací/skriptovací jazyk s příslušnými knihovnami.

Franta <xkucf03/>

Re:Transformace tabulky v .php souboru (přehození sloupců)
« Odpověď #9 kdy: 20. 04. 2014, 23:30:41 »
V zadání tak trochu cítím "použijte sort, awk, sed apod.", ale to mi přijdou zrovna na tohle celkem nevhodné nástroje.

+1

Ono to HTML možná bude napsané tak, aby těmito nástroji šlo snadno zpracovat a je to asi pointa té úlohy… ale není to obecné řešení a v praxi si na tom člověk vyláme zuby, protože kdejaké HTML stažené z Internetu (ne připravené učitelem) bude obsahovat takový hnůj, že to tímhle zpracovat nepůjde.

Gooo

Re:Transformace tabulky v .php souboru (přehození sloupců)
« Odpověď #10 kdy: 21. 04. 2014, 12:38:30 »
V tom případě bys měl projít doporučenou literaturu a naučit se to udělat, nebo zadání počítá s tím že to někdo na Rootu udělá za tebe?

Nebudu lhát, že jsem na podobnou odpověď nečekal :o). Jak jsem psal, hledám radu, to znamená nakopnutí, na které příkazy se zaměřit. V žádném případě jsem nehledal někoho, kdo toto zadání vypracuje (ani sem nedávám odkaz na onu tabulku). Také jsem napsal, že vím jak to obejít a udělat například pomocí excelu tak, aby byl vyhotoven výsledek a také jsem dodal, že to není mým cílem.

Omlouvám se za tuto reakci, ale Vaši odpověď tedy může napsat jenom trouba.

Druhá věc je, že není vš tak jednobarevné. Předmět o kterém je řeč jsme v tomto semestru měli jeden dvouhodinový blok, kde byla přednáška o historii linuxu a studijní opora je řešena zasláním pěti PPS prezentací. A protože jsem trouba a z těch prezentací jsem to nepochopil, googlil jsem základy administrace linuxu a pak jsem podal dotaz zde. Paradoxně si jsem jist, že i když pokusy s vyhotovením úkolu dopadly neúspěšně, ono vyhledávání informací a také slepé cesty znamenaly, že ve mě nějaké informace přece jen zůstaly a to je smysl takových úkolů.

Takže, jestliže někdo špatně dotaz pochopil a já jsem jej urazil, omlouvám se :o)

Tonda

  • *****
  • 630
    • Zobrazit profil
    • E-mail
Re:Transformace tabulky v .php souboru (přehození sloupců)
« Odpověď #11 kdy: 21. 04. 2014, 13:31:20 »
Tu tabulku si sem dát spíš měl, protože pokud je to jedna konkrétní konkrétně formátovaná tabulka, tak je to úplně jiná úloha než když by to mělo být schopno prohodit sloupce v libovolné HTML tabulce. Pokud je to ideálně formátovaná tabulka jako v tom dotazu na Stackoverflow co sem dal Strašidlo, tak to půjde snadno pomoci awk jak je tam rovněž uvedeno a má smysl to takto zkoušet. Ale i tak mi to nepřijde jako vhodná úloha do předmětu "administrace systému", i když z názvu je těžko odhadovat podrobnější náplň předmětu.

To, že si zadání zkomolil a zamlžil, akorát odvádí diskusi nesmyslným směrem, protože si tu některé věci, které jsou dané zbytečně a často chybně musíme domýšlet.

co je standardní nástroj je skutečně diskutabilní, Java je v repozitářích majoritních Linuxových dister a je doinstalovatená jedním příkazem, Python se snad dokonce instaluje v základu. Taky je otázka zda se OS založené na Linuxu dají považovat za UNIX.

Kit

Re:Transformace tabulky v .php souboru (přehození sloupců)
« Odpověď #12 kdy: 21. 04. 2014, 16:48:13 »
Kód: [Vybrat]
wget -O - http://… | tidy … | xsltproc šablona.xsl > výstup.xml # nebo výstup.txt
Tidy tam není potřebné, xsltproc má parametr --html. Viz
https://gist.github.com/kitsaels/11144830