Sziasztok! Megoldást keresek a következő feladatra: Adva van XX db. txt fájl amelyből egy shellscript segítségével HTML fájlokat készítek. Csakhogy az lenne a feladat, hogy a fájlok hátterét ne egyforma színüre készítse. Ez néhány db. fájl esetében nem gond, mert kézzel át lehet írni, ámde 60-80-100 fájlnál azért ez már "húzós". Tehát! Hogyan tudom scriptől azt megoldani, hogy a készülő HTML fájlok más és más hátteret kapjanak? Pl. #74ECDE #DEF4A6 #F7C7FB #C9FBCA #FBD09C #9DFBF5 #BDBAFB stb. A fentieket lehetne váltogatni, vagy akár az árnyalatokon is változtatni, ha az utóbbi megoldható. Köszi előre is az 5leteket -- Üdv.: Imre °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° TANUSÍTVÁNY! E LEVÉL TOVÁBBÍTÓJA szavatolja, hogy Vírus, Spyware, Adware, Worm, Windows, sem semmilyen más kártékony program még a gép közelében sem volt a levél elküldésekor! Ezért a levél NEM fertőzött! °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Az ilyen kihívásokat imádom, úgyhogy nosza: Generálni kéne egy jó nagy adag színt: Ha csak 00, 11, 22 ... EE, FF kódot használunk akkor is 16^3 azaz 4096 féle színt kapunk, ebből már elég jól lehet válogatni :) Azt, hogy ilyet hogy generáljunk, nem írom le. Tetszőleges nyelven meg lehet írni rá a programot, de egy bash szkript is megoldja pikk-pakk a dolgot. Na jó, legyen: for i in 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF; do for j in 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF; do for k in 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF; do echo \#$i$j$k >> szinek done done done Most van több lehetőségünk is, hogy ezek közül hogy válasszunk, én úgy gondolom, hogy ha a színek többen vannak, mint amennyi kell, akkor keverjük őket össze és menjünk végig a listán - így biztos, hogy egy szín egyszer fordul elő, ráadásul véletlen sorrendben: shuf szinek -o szinek Fontos megjegyeznem, hogy a shuf szinek > szinek nem fog működni, mert a futás után üres lesz a fájl. Ez azért van, mert a bash-ben irányítjuk át a standard kimenetet a szinek fájlba, ami előtt a bash szépen kitörli a fájl tartalmát. A -o kapcsolóval viszont a programnak mondhatjuk meg, hogy a kimenet mi legyen, ilyenkor nem írja felül a fájlt :) Kellene nekünk valami olyan, ami kicseréli mondjuk a _SZIN_ szavakat a generált fájlokban. Ez egyszerű: sed 's/_SZIN_/#00FF00/' file Viszont nem a #00FF00-ra kellene cserélni, hanem a szinek fájlban lévő X. sorban található hexa kódra. Egy fájl X. sorának kiírására kapásból 3 módszer jut eszembe: sed -n 'Xp' szinek sed -n 'X{p;q}' szinek --ez gyorsabb, mert az X. sor után kilép head -X szinek | tail -1 --ez lassu... gawk 'NR==X' szinek gawk '{if (NR==2) {print $0; nextfile}}' szinek --ez megint gyorsabb Akkor most feltételezem, hogy már van XX darab html fájlunk egy könyvtárban, amik csak arra várnak, hogy a _SZIN_ részük ki legyen cserélve egy véletlen színre. Menjünk végig rajtuk és alkalmazzuk a fenti sorok valamelyikét is, hogy mindig a következő sorban lévő kód kerüljön oda: let i=1 for f in *.html; do sed "s/_SZIN_/`sed -n "$i{p;q} szinek"/g" $f let i++ done Azért persze ez előtt le kell generálni és összekeverni a színeket a szinek fájlba. Ha nem akarjuk egyedivé tenni őket, akkor lehet mindig véletlenedik sort olvasni, vagy mindig kevergetni a fájlt. Egy hasznos dolog van még, ha nem akarunk kifutni a színekből, hanem folyamatosan előről kezdeni, ha elfogy a 4096 szín: let i=1 for f in *.html; do sed "s/_SZIN_/`sed -n "$i{p;q} szinek"/g" $f let 'i = i>4096 ? 1 : i+1' done Jó éjt :) On 28/09/10 09:52, NOT INFECTED!from Lakosimi wrote:
Sziasztok!
Megoldást keresek a következő feladatra: Adva van XX db. txt fájl amelyből egy shellscript segítségével HTML fájlokat készítek. Csakhogy az lenne a feladat, hogy a fájlok hátterét ne egyforma színüre készítse. Ez néhány db. fájl esetében nem gond, mert kézzel át lehet írni, ámde 60-80-100 fájlnál azért ez már "húzós". Tehát! Hogyan tudom scriptől azt megoldani, hogy a készülő HTML fájlok más és más hátteret kapjanak?
Pl. #74ECDE #DEF4A6 #F7C7FB #C9FBCA #FBD09C #9DFBF5 #BDBAFB stb. A fentieket lehetne váltogatni, vagy akár az árnyalatokon is változtatni, ha az utóbbi megoldható.
Köszi előre is az 5leteket
Haliho! Te aztán nem viccelsz! Még napok múlva is keresem az álkapcsom... Üdv:Tamás Az iPhone készülékemről küldve 2010.09.29. dátummal, 1:40 időpontban "Horváth Gergely J. (Ottó)" <hgj@sch.bme.hu> írta:
Az ilyen kihívásokat imádom, úgyhogy nosza:
Generálni kéne egy jó nagy adag színt: Ha csak 00, 11, 22 ... EE, FF kódot használunk akkor is 16^3 azaz 4096 féle színt kapunk, ebből már elég jól lehet válogatni :) Azt, hogy ilyet hogy generáljunk, nem írom le. Tetszőleges nyelven meg lehet írni rá a programot, de egy bash szkript is megoldja pikk-pakk a dolgot. Na jó, legyen:
for i in 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF; do for j in 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF; do for k in 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF; do echo \#$i$j$k >> szinek done done done
Most van több lehetőségünk is, hogy ezek közül hogy válasszunk, én úgy gondolom, hogy ha a színek többen vannak, mint amennyi kell, akkor keverjük őket össze és menjünk végig a listán - így biztos, hogy egy szín egyszer fordul elő, ráadásul véletlen sorrendben:
shuf szinek -o szinek
Fontos megjegyeznem, hogy a
shuf szinek > szinek
nem fog működni, mert a futás után üres lesz a fájl. Ez azért van, mert a bash-ben irányítjuk át a standard kimenetet a szinek fájlba, ami előtt a bash szépen kitörli a fájl tartalmát. A -o kapcsolóval viszont a programnak mondhatjuk meg, hogy a kimenet mi legyen, ilyenkor nem írja felül a fájlt :)
Kellene nekünk valami olyan, ami kicseréli mondjuk a _SZIN_ szavakat a generált fájlokban. Ez egyszerű:
sed 's/_SZIN_/#00FF00/' file
Viszont nem a #00FF00-ra kellene cserélni, hanem a szinek fájlban lévő X. sorban található hexa kódra. Egy fájl X. sorának kiírására kapásból 3 módszer jut eszembe:
sed -n 'Xp' szinek sed -n 'X{p;q}' szinek --ez gyorsabb, mert az X. sor után kilép
head -X szinek | tail -1 --ez lassu...
gawk 'NR==X' szinek gawk '{if (NR==2) {print $0; nextfile}}' szinek --ez megint gyorsabb
Akkor most feltételezem, hogy már van XX darab html fájlunk egy könyvtárban, amik csak arra várnak, hogy a _SZIN_ részük ki legyen cserélve egy véletlen színre. Menjünk végig rajtuk és alkalmazzuk a fenti sorok valamelyikét is, hogy mindig a következő sorban lévő kód kerüljön oda:
let i=1 for f in *.html; do sed "s/_SZIN_/`sed -n "$i{p;q} szinek"/g" $f let i++ done
Azért persze ez előtt le kell generálni és összekeverni a színeket a szinek fájlba.
Ha nem akarjuk egyedivé tenni őket, akkor lehet mindig véletlenedik sort olvasni, vagy mindig kevergetni a fájlt.
Egy hasznos dolog van még, ha nem akarunk kifutni a színekből, hanem folyamatosan előről kezdeni, ha elfogy a 4096 szín:
let i=1 for f in *.html; do sed "s/_SZIN_/`sed -n "$i{p;q} szinek"/g" $f let 'i = i>4096 ? 1 : i+1' done
Jó éjt :)
On 28/09/10 09:52, NOT INFECTED!from Lakosimi wrote:
Sziasztok!
Megoldást keresek a következő feladatra: Adva van XX db. txt fájl amelyből egy shellscript segítségével HTML fájlokat készítek. Csakhogy az lenne a feladat, hogy a fájlok hátterét ne egyforma színüre készítse. Ez néhány db. fájl esetében nem gond, mert kézzel át lehet írni, ámde 60-80-100 fájlnál azért ez már "húzós". Tehát! Hogyan tudom scriptől azt megoldani, hogy a készülő HTML fájlok más és más hátteret kapjanak?
Pl. #74ECDE #DEF4A6 #F7C7FB #C9FBCA #FBD09C #9DFBF5 #BDBAFB stb. A fentieket lehetne váltogatni, vagy akár az árnyalatokon is változtatni, ha az utóbbi megoldható.
Köszi előre is az 5leteket
Köszi! Egyébként kihagytam egy `-t :P
sed "s/_SZIN_/`sed -n "$i{p;q} szinek"`/g" $f ^ | ez itt
On 30/09/10 11:45, Szekeres Tamás wrote:
Haliho! Te aztán nem viccelsz! Még napok múlva is keresem az álkapcsom... Üdv:Tamás
Az iPhone készülékemről küldve
2010.09.29. dátummal, 1:40 időpontban "Horváth Gergely J. (Ottó)" <hgj@sch.bme.hu> írta:
Az ilyen kihívásokat imádom, úgyhogy nosza:
Generálni kéne egy jó nagy adag színt: Ha csak 00, 11, 22 ... EE, FF kódot használunk akkor is 16^3 azaz 4096 féle színt kapunk, ebből már elég jól lehet válogatni :) Azt, hogy ilyet hogy generáljunk, nem írom le. Tetszőleges nyelven meg lehet írni rá a programot, de egy bash szkript is megoldja pikk-pakk a dolgot. Na jó, legyen:
for i in 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF; do for j in 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF; do for k in 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF; do echo \#$i$j$k >> szinek done done done
Most van több lehetőségünk is, hogy ezek közül hogy válasszunk, én úgy gondolom, hogy ha a színek többen vannak, mint amennyi kell, akkor keverjük őket össze és menjünk végig a listán - így biztos, hogy egy szín egyszer fordul elő, ráadásul véletlen sorrendben:
shuf szinek -o szinek
Fontos megjegyeznem, hogy a
shuf szinek > szinek
nem fog működni, mert a futás után üres lesz a fájl. Ez azért van, mert a bash-ben irányítjuk át a standard kimenetet a szinek fájlba, ami előtt a bash szépen kitörli a fájl tartalmát. A -o kapcsolóval viszont a programnak mondhatjuk meg, hogy a kimenet mi legyen, ilyenkor nem írja felül a fájlt :)
Kellene nekünk valami olyan, ami kicseréli mondjuk a _SZIN_ szavakat a generált fájlokban. Ez egyszerű:
sed 's/_SZIN_/#00FF00/' file
Viszont nem a #00FF00-ra kellene cserélni, hanem a szinek fájlban lévő X. sorban található hexa kódra. Egy fájl X. sorának kiírására kapásból 3 módszer jut eszembe:
sed -n 'Xp' szinek sed -n 'X{p;q}' szinek --ez gyorsabb, mert az X. sor után kilép
head -X szinek | tail -1 --ez lassu...
gawk 'NR==X' szinek gawk '{if (NR==2) {print $0; nextfile}}' szinek --ez megint gyorsabb
Akkor most feltételezem, hogy már van XX darab html fájlunk egy könyvtárban, amik csak arra várnak, hogy a _SZIN_ részük ki legyen cserélve egy véletlen színre. Menjünk végig rajtuk és alkalmazzuk a fenti sorok valamelyikét is, hogy mindig a következő sorban lévő kód kerüljön oda:
let i=1 for f in *.html; do sed "s/_SZIN_/`sed -n "$i{p;q} szinek"/g" $f let i++ done
Azért persze ez előtt le kell generálni és összekeverni a színeket a szinek fájlba.
Ha nem akarjuk egyedivé tenni őket, akkor lehet mindig véletlenedik sort olvasni, vagy mindig kevergetni a fájlt.
Egy hasznos dolog van még, ha nem akarunk kifutni a színekből, hanem folyamatosan előről kezdeni, ha elfogy a 4096 szín:
let i=1 for f in *.html; do sed "s/_SZIN_/`sed -n "$i{p;q} szinek"/g" $f let 'i = i>4096 ? 1 : i+1' done
Jó éjt :)
On 28/09/10 09:52, NOT INFECTED!from Lakosimi wrote:
Sziasztok!
Megoldást keresek a következő feladatra: Adva van XX db. txt fájl amelyből egy shellscript segítségével HTML fájlokat készítek. Csakhogy az lenne a feladat, hogy a fájlok hátterét ne egyforma színüre készítse. Ez néhány db. fájl esetében nem gond, mert kézzel át lehet írni, ámde 60-80-100 fájlnál azért ez már "húzós". Tehát! Hogyan tudom scriptől azt megoldani, hogy a készülő HTML fájlok más és más hátteret kapjanak?
Pl. #74ECDE #DEF4A6 #F7C7FB #C9FBCA #FBD09C #9DFBF5 #BDBAFB stb. A fentieket lehetne váltogatni, vagy akár az árnyalatokon is változtatni, ha az utóbbi megoldható.
Köszi előre is az 5leteket
participants (3)
-
"Horváth Gergely J. (Ottó)"
-
NOT INFECTED!from Lakosimi
-
Szekeres Tamás