On Wed, Mar 11, 2009 at 11:52:41PM +0100, Luca Lesinigo wrote:
> Siccome mi serviva alla svelta ho buttato insieme 'sta fregnaccia: for
> PKG in $(dpkg -l | grep ^ii | awk '{ print $2 }'); do { printf '%6d
> %s\n' $(apt-cache show $PKG | grep ^Installed-Size: | head -n1 | awk
> '{ print $2 }') ${PKG} } done
eew. Un paio di consigli anche se la soluzione pulita è in fondo alla
mail:
1. Come evitare le pipe (si diventa ciechi):
grep pattern | awk '{cmd}' # .. diventa:
awk '/pattern/ {cmd}' # esegue cmd per le linee che matchano
2. Come evitare di buttare via un sacco di output
grep pattern | head -n1 # .. diventa:
grep -m 1 pattern # esce dopo 1 match
> Qualche illustre debianaro mi sa dire un modo meno stupido per
> ottenere lo stesso risultato?
Ora mi sento un illustre Debianaro :)
grep-status -n -FStatus -sPackage,Installed-Size 'install ok installed'
Questo è però un formato balzano, quindi ci sono un paio di opzioni:
perl -e '$/="\n\n"; do { @p=(split "\n")[0,1]; $h{$p[0]} = $p[1] } for
<>; END{map { print("$h{$_} $_\n") } (sort {$h{$b} <=> $h{$a}} keys
%h)[0..9]}'
perl -e '($/,$\)=("\n\n", "\n"); print join" ",reverse split while <>' | sort -rn | head
perl -e '$/="\n\n"; $\="\n"; do {s/\n/ /g; print} while <> ' | sort -rnk2 | head
perl -e '$/="\n\n"; print (join " ", (split "\n", <>)[1, 0], "\n") while <>' | sort -rn | head
perl -e '$/="\n\n"; print (join " ", reverse(split "\n", <>), "\n") while <>' | sort -rn | head
paste -sd ' \n' | sort -rn | head
Io tifo per l'unica soluzione che non comprende "| sort | head" :)
Saluti a tutti dalla vichinghia
--
Fernando Vezzosi
qw(MDAx MTAw MDEw MDEx MDAw _5 MTEw _6 _1 _5 _5 _4 _2 _2 _6
MTEx _1 _5 _5 _4 _5 _2 _6 _1 _1 _2 _2 _3 _5 _5 _6 _1 _1 _2
_5 _4 _3 _5 _2 _5 _1 _2 _3 _4 _5 MA==)
Attachment:
signature.asc
Description: Digital signature