Kezdőlap › Fórumok › Programozás › Bash script
- This topic has 437 hozzászólás, 56 résztvevő, and was last updated 13 years, 6 months telt el by
Goosfrabaa.
-
SzerzőBejegyzés
-
2006-10-24-14:32 #2053289budacsika wrote:Szia!
Nem túl legáns, de működik. (nálam bizos)
ls -l | cut -d ” ” -f 1,4,5,6,7,8Ez csak spec. esetben működik. (Pl. ha egy filera próbálod meg)
Ugyanis ha több file van, akkor a méret oszlop szélességét az ls -l a „legnyagyobb”-hoz állítja be. Pl:Code:-rwxrwx— 1 mycroft mycroft 168915 2006-05-10 19:42 cincogo.jpg
-rw-r–r– 1 mycroft mycroft 0 2006-10-20 08:40 lista.txtLátható, hogy a csoport és a méret között lehet több space is (sőt általában több van), így elég érdekes lista lesz a végeredmény, hiszen a cut az üres mezőket is mezőnek tekinti.
És akkor még bejöhet olyasmi, hogy lehet olyan rendszer, ami a dátumot nem – jellel hanem space-szel választja el, vagy esetleg olyan filenevek, amik tartalmaznak space-t is.
Ha már ilyen irányban nézelődünk, akkor awk jöhet még szóba, de az már ágyúval verébre kategória 🙂2006-10-24-14:36 #2053290Phű, az első kérdés ok, azt felfogtam. A második: nem annak a sednek kell a kimenetet generálni, csak valamit odaírtam amiben van ‘, de ezt észre is vetted.
Sőt most látom csak, hogy a második is jó, csak a „hülye példában” az echo keze picit meg van kötve karakterügyileg, ha nem védjük le manuálisan. De ha írok egy scriptet ami kifejezetten ilyen eszement karaktereket generál, akkor az első megoldás működik.
Köszönöm szépen.2006-10-24-14:40 #2053291Egyébként az a sed-es sor az eredeti feladat megoldása. Van valami elegánsabb megoldás esetleg? A feladat konkrétan: az ls -l második oszlopa kell (a számos), meg a dátumoszlopok.
Az eddigi megoldás még egyszer:
ls -l |sed ‘s/.{10} *([0-9]+).* [0-9]+ (.*) .*/1 2/’2006-10-24-14:56 #2053292retaliator44 wrote:Egyébként az a sed-es sor az eredeti feladat megoldása. Van valami elegánsabb megoldás esetleg? A feladat konkrétan: az ls -l második oszlopa kell (a számos), meg a dátumoszlopok.
Az eddigi megoldás még egyszer:
ls -l |sed ‘s/.{10} *([0-9]+).* [0-9]+ (.*) .*/1 2/’Azért vigyázz, mert symlinkeknél gondod lehet:
lrwxrwxrwx 1 mycroft mycroft 21 2006-10-11 21:29 homepages -> /media/sda8/Homepages
Egy ilyen sorra ez lesz az eredmény:
1 2006-10-11 21:29 homepages ->(Természetesen az összes space-t tartalamzó filenévnél ugyanez előjön)
Ha már emlegettem az awk-t, akkor egy lehetőség:
ls -l | awk ‘{ print $2,$6 }’2006-10-24-15:03 #2053293Értem. És awk nélkül? (asszem ZH-kban nem nagyon szeretik az awk-t, csak azért, nem kötözködni akarok)
2006-10-24-15:08 #2053294Amennyiben ELTE Progmat/Proginfo és progkör tárgy, akkor valóban nem szeretjük zh-ban az AWK-t, illetve van egy szabály, hogy max mennyi pontot lehet awk-s megoldással szerezni.
Amúgy természetesen azzal a sed-del is meg lehet csinálni, csak a 2. csoportot jobban kell definiálni. Mivel dátumról van szó, ez nem jelenthet gondod.2006-10-24-15:14 #2053295Igen, progkör… egyébként pont ez a baj hogy a dátumnál mi van. Mert eddig ahány rendszer annyiféle dátum. Van ahol 2006-10-24 van ahol Oct 24 2006 és így tovább. Pláne ha az időt is neadjisten 10:00PM-nek írja akkor aztán káosz.
2006-10-24-15:39 #2053296(Tök más) Tudom hülye kérdés, de hogy kell szűrőt csinálni? Olyat ami fileból olvas vagy ha nem kap filet akkor standard inputról?
2006-10-24-17:48 #2053297retaliator44 wrote:(Tök más) Tudom hülye kérdés, de hogy kell szűrőt csinálni? Olyat ami fileból olvas vagy ha nem kap filet akkor standard inputról?Erre találsz egy általánosan alkalmazható példát itt:
http://people.inf.elte.hu/spala/unix_gyak/peldak/pelda1ISO
(esetleg http://people.inf.elte.hu/spala/unix_gyak/peldak/pelda1UTF – karakterkódolás csak a különbség)
Lehet máshogy is, ez egy lehetőség.2006-10-24-17:50 #2053298retaliator44 wrote:Igen, progkör… egyébként pont ez a baj hogy a dátumnál mi van. Mert eddig ahány rendszer annyiféle dátum. Van ahol 2006-10-24 van ahol Oct 24 2006 és így tovább. Pláne ha az időt is neadjisten 10:00PM-nek írja akkor aztán káosz.Igen, a pandorán 2006-10-24 a forma, sztem azt vedd viszonyítási alapnak.
Más kérdés, hogy ha ez beadandóban lenne, akkor gáz van, mert a fi-n már más formátum van :S -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz