Egy kérdésem lenne: Olyan script-et írnok, amelyik nézi a distrowatch.com-on, hogy jelent-e meg új k3b és ha igen, akkor lehúzza a forrást, lefordítja és deb csomagot csinál belőle.
Nem túl bonyolult, de a HTML tag-ekből nem tudom kibányászni a tar.gz file URL-jét. A "K3B_URL=" sorban kene ezt megvalositani (kipontoztam).
A masik: hogyan tudom a verzioszamokat osszehasonlitani? (SOURCE=.. sor utan)
Egyszerűbbnek tűnik a patch által kisírt kimenetből kiszűrni az egyéb architektúrákra vonatkozó sorokat, mint "egyszerűen" kielemezni és újraépíteni a patch fájlokat.
Ezzel talán el lehet indulni.
$PATCHCMD | awk ' /arch\// { if ( /arch\/i386/) print next }
Egyébként arra kell, hogy a kernelforrásból le tudjam törölni a nem i386 specifikus architektúrákat, ne vigye a helyet. Viszont ha ezt megteszem, amikor pecselem a kernelt, állandóan sír, hogy nincs pl arch/ppc/xxx file, stb. Nem akarom a patch parancs kimenetét sem elnyomni klf kapcsolókkal, mert akkor nem látom, hogy másutt van-e gubanc.
Ha érdekel, erről a patchgyüjteményről van szó, igen királyságos.
egy kernel-patchből kellene az összes olyan sort kilőni, ami nem az arch/i386 architekurára vonatkozik. Tehát az összes arch/ppc, arch/s340 stb-re vonatkozókat. Természetesen a nem az arch struktúra alatti patchek megmaradjanak!
Nálam gawk van. Természetesen kipróbáltam a tippet, mielőtt leírtam: a /bin/pingből csináltam /tmp/pinget, az ELF elffé változtatásával. Byte-ra azonos volt a kettő. A nullok miatt azért nem is izgattam magam, mert (talán a manben, de most nem találom) olvastam, hogy a gawk sztringek sztenderd nullát is tartalmazhatnak (vagyis nem nulltermináltak).
Köszönöm, hogy megnézted! Egyébként 3.1.3-as gawk-m van. Az igaz, hogy textre találták ki, de miért ne reménykedjen az ember, ha már ez a feladat. Amúgy a bináris file hekkelése sem tartozik a kifejezetten korrekt dolgok közé, ugyanakkor szükségünk van verziókövetésre.
Hosszas erőlködés után sikerült életet lehelnem uhu alatt az Hp LJ 1000w nyomtatómba, azonban úgy tünik hogy a nyomtató minden inditásánál, vagy a szgép hideginditásánál végre kell hajtani a 'cat sihp.img > /dev/usb/lp0' parancsot (hogy betöltsön valami firmware t..:). ahogy egy külföldi listán irják :
"> Remember to load the firmware each time you turn on the printer (see > second point (ez a cat es cucc)) furthermore, if you come from a windows session (I hope it's > not your case :-/ ) turn off and on the printer and reload the firmware."
Ezt úgy oldottam meg hogy a /etc/init.d/cupsd elejébe beirtam a fenti parancsot, de gondolom ez nem túl szép megoldás, főleg ha már "bevan töltve" akkor feleslegesen tölti be megint.. Szóval erre keresnék valami szép megoldást, nincse valakinek szebb ötlete..
No kipróbáltam. Lesújtó eredménnyel. (Perllel) csináltam egy fájlt, amiben <bájt><szóköz> formában volt 0-tól 255-ig minden karakter (ez ugye 512 bájtos eredményt adott). Ezelk után lefuttattam az eredeti, alant szereplő awk scriptet, a cserében előírva, hogy minden<szóköz>-t cseréljen "X" -re. Íme az eredmények: $ nawk -vRS=ilyenuccselesz -vORS='' '{gsub(/ /, "X"); print}' < lo > lo1 $ gawk -vRS=ilyenuccselesz -vORS='' '{gsub(/ /, "X"); print}' < lo > lo2 $ mawk -vRS=ilyenuccselesz -vORS='' '{gsub(/ /, "X"); print}' < lo > lo3 $ ll lo lo? -rw-r--r-- 1 zgabor zgabor - 512 Máj 21 00:01 lo -rw-r--r-- 1 zgabor zgabor - 493 Máj 21 00:03 lo1 -rw-r--r-- 1 zgabor zgabor - 512 Máj 21 00:03 lo2 -rw-r--r-- 1 zgabor zgabor - 0 Máj 21 00:06 lo3
A fájlokat is megnézve, az látszik, hogy az egyetlen valódi (Kernighan-féle) awk (nawk néven szerepelt) sokat ront (azaz nem csak a NULL, és a SUBSEP zavar be - gyakorlatilag 0-9 -ig mindent töröl!) - és mellesleg némi sorvég jelet is beszúr, függetlenül attól, hogy nem kéne neki. A gawk korrekt volt, de számomra a legmeglepőbb a mawk kimenete volt - mindenféle hibaüzenet nélkül semmit se csinálni, azért ez szép teljesítmény!
Szóval ha Linux, vagy egyértelműen lehet gawk -ot használni, akkor OK, egyébként az AWK-t erre a feladatra el kell felejteni (amúgy is szöveg feldolgozására találták ki). Ja: $ nawk -V awk version 20040207 $ gawk --version GNU Awk 3.1.1 $ mawk -W version mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
(nawk -ból és asszem gawk-ból is van újabb, sőt mintha a nawk-nál pont valami NULL bájt hiba javításról olvastam volna anno)
OrCAD design file. Vannak benne stringek, ezekre mutató pointerek, meg sok egyéb bináris dolog. Arra figyelek, hogy az eredeti hossz és a csere utáni megegyezzen. A probléma valójában az, hogy az svn-ből jövő revíziót automatizáltan cserélje a rajzlapokon.
Az is kérdés lehet, hogy mennyire bináris ez a file? Egyes file-ok olyan szenyók, hogy bináris hossztényezők vannak bennük, azután ha az ember lecserélget benne egyet-s-mást már el is rontotta az egészet...
Ez jo, de mi a helyzet a fajlban levo NULL bajttal, es a SUBSEP valtozoban szereplo (man szerint alapbol 034 -es kodu) karakterrel? Valamelyik awk doksibol az remlik, hogy ezzel a ket karakterrel az awk nem banik tul jol? (Ebbol nyilvan a SUBSEP-et el lehet feledni pl meg egy eplicit ertekadassal, de a NULL-lal tudtommal ga'zok vannak.) Erdemes lenne egy tesztet megejteni, es kiprobalni mind a harom elterjedt AWK megvalositassal ("The on-true-AWK-by-Kernighan" = nawk, mawk es gawk).
Köszi, ez tetszik! Tehát adjak meg rekord szeparátornak egy viszonylag hosszabb, soha elő nem forduló patternt, és így egyetlen soros lesz az egész file-om. Ki fogom próbálni.
Ha bináris file-ban szeretnék mintát cserélni, annak van valami viszonylag egyszerű módja azon kívül, hogy megírom C-ben, vagy az egészet egy hex file-lá alakítom, patternt cserélek, majd binárissá alakítom? Néhány megabyte fölött ez már kínosan lassú bír lenni - bár nem próbáltam ki.
Nagyjából a sed-re lenne szükségem, de úgy tűnik, a 0x0d 0x0a-ból automatikusan 0x0a-t csinál. Márpedig egy bináris file-ban véletlenül előfordulhat a 0x0d 0x0a szekvencia.