Nov 7-én felrakott csomagok törlése slackpkg-val egy menetben

(i486, noarch megy, sbo marad)

sudo /usr/sbin/slackpkg remove `ls -lt /var/log/packages | grep "nov 7" | perl -e 'my $res = ""; while (<>) { chop; $_ =~ s/^+.*[0-9][0-9]:[0-9][0-9] (.*)\-[0-9\.]*\-(noarch|i486)\-[0-9]$/$1/; $res .= $_." "; } print $res;'`

Hozzászólások

sub
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 14.1 | 3.10.17-janos

Nem akarlak bántani, de nem érzed cikinek a grep-et és a perl-t egy pipe-ban? ;)
Tudnád specifikálni a pontos feladványt egyébként?
Odáig értem, hogy a /var/log/packages alól kiszeded a nov 7 dátumú fájlokat (ami eleve nem nyerő, mert ugye ott lehetne akár két évvel korábbi, szintén nov. 7-i telepítés nyoma is, amit nem feltétlenül akarsz törölni, ha jól sejtem)
Egyébként úgy tudom, chop helyett jobb a chomp használata, hogy csak akkor vágja le az utolsó karaktert, ha az rekord szeparátor.

bár nem ingem, azt gondolom a grep +perl cikiségéről, hogy optikai értelemben ciki, de imho ezeknek az összetaknyolt csöveknek pont az a lényege, hogy gyorsan tud egy valamilyen megoldást adni eg adott problémára. Nyilván végtelen szabadidő ráfordításával mindent jobbá lehet tenni.De érdemes-e? Én mérnökként azt gondolom, hogy ami jó, azt ne akarjad megjavítani. A + grep nyilván nem fog perf problémákat okozni neki, ebben az esetben, etc. A perl esetében nem vitás, h sokkal szebb lenne a grep nélkül, de ha történetesen php cli-vel csinálta volna, akkor pont ugyanennyire lett volna jó a megoldása az adott 1 problémára.

Aztán most nézzünk mélyen magunkba, meg akarta mutatni, milyen szépet barkácsolt, erre itt fikázzuk, meg csépeljük a szót fölöslegesen (én is persze).

Nincs harag, ugye?

Harag nincs, csak amikor egy plusz /minta/ && do { } kell a perlbe (ha jól emlékszem, vagy tíz éve nem használtam, lehet, hogy az && nem is kell bele), akkor elég furán néz ki egy sima greppel összekapcsolva.
De azért kértem, hogy írja le a pontos feladatot, mert itt a perl amolyan ágyúval verébre kategóriának tűnik.
(vagy ha már perl, akkor írjuk meg tisztességesen és olvassuk ki vele a fájlok dátumait, ne szórakozzunk a stringgé alakított dátumokkal, amik vagy jól jelennek meg vagy nem - lokalizációs beállításoktól függően, ha igaz)

Magamnak szoktam a blogra olyan dolgokat bedobni, amelyek később jól jöhetnek még (jegyzetnek), nem a közönség okulására, vagy mutogatni. A grep helyett perl nem jutott eszembe, majd legközelebb. :)

A feladat valóban az volt, hogy fájlnevekből szerettem volna egy parancssorba összeállítani egy felsorolást az adott feltétel alapján, a nevekben lévő verziómegjelölés nélkül.

Az előzőekhez ugyan nincs sok köze, de azért az igazi tiszta száraz érzés a yum + grep :)
Ezt még én is össze tudtam farigcsálni (i486 helyett i686 van a Fedoraban), pedig messze a múlt évezredben tanultam ilyesmit

# yum remove $(egrep -ie 'nov 07'.*'installed'.*('noarch|i686') /var/log/yum*|cut -d" " -f5)

Aki meg még ért is hozzá, mármint a grep, a yum és barátaik használatához, akár még 10 karaktert is le tud faragni belőle :)