Shell Script zählung von Output

Bash, Shell, PHP, Python, Perl, CGI
chr.raible
Posts: 19
Joined: 2005-11-07 21:31

Shell Script zählung von Output

Post by chr.raible » 2009-09-10 12:45

Hi @all

ich hab ein problem bei dem ich nicht weiterkomme. Und zwar muss ich ein Shell script erstellen, dass mir von einem bestimmten Befehl die anzahl der gleichen einträge zu einem bestimmten Zeichen angibt. (Der satz ist ein bisschen komplizeiert ^^)

Zur genauen erläuterung:

Ich habe mit einem Befehel ( lpstat -o) folgende Ausgabe:

Code: Select all

FilePostScript-10522    123          4096   Mon 03 Aug 2009 09:59:31 AM CEST
FilePostScript-10532    23132            3072   Mon 03 Aug 2009 04:27:45 PM CEST
FilePostScript-10847    23123         2531328   Fri 21 Aug 2009 03:20:26 PM CEST
g164-10770              23123        737280   Mon 17 Aug 2009 01:58:06 PM CEST
g164-10999              23123         46080   Wed 09 Sep 2009 09:09:07 AM CEST
g1e2-10238              23123        1703936   Fri 17 Jul 2009 08:58:21 AM CEST
g606pd-10645            23123        176128   Thu 06 Aug 2009 06:19:06 PM CEST
psa4lab-10250           23123         78848   Fri 17 Jul 2009 12:24:26 PM CEST
psa4lab-10273           23123           86016   Mon 20 Jul 2009 11:57:48 AM CEST
psa4lab-10481           23123          266240   Wed 29 Jul 2009 03:46:09 PM CEST
psa4lab-10813           23123            326656   Wed 19 Aug 2009 03:17:54 PM CEST
psa4lab-10852           23123              6144   Mon 24 Aug 2009 09:31:39 AM CEST
psa4lab-10917           23123            123904   Wed 26 Aug 2009 05:42:56 PM CEST
psa4lab-10918           23123         71680   Wed 26 Aug 2009 06:40:05 PM CEST


Jetzt soll ich die verschiedenen Druckjobs die an einen drucker gesendet werden zählen.
Der Druckername sind die Buchstaben / Zahlen bis zum ersten - (Minuszeichen).

Als Beispiel wurden 7 Jobs an den Drucker psa4lab geschickt.

Kann mir da jemand helfen wie ich das am besten bewerkstelligen kann? Es muss nicht unbedingt eine Komplettlösung sein.
Erste Ansätze würden auch schon reichen.

Mfg
Chr.Raible

chr.raible
Posts: 19
Joined: 2005-11-07 21:31

Re: Shell Script zählung von Output

Post by chr.raible » 2009-09-11 14:50

Hi @all

danke für eure Hilfe. habs nun mit folgendem Konstrukt hinbekommen.

Sollte es eine bessere Lösung geben, dann postet Sie bitte.

Code: Select all

NR_OF_JOBS=`lpstat -o | wc -l`

if [ $NR_OF_JOBS > 10 ]
then
  #Count the jobs of uniq printer
  TOP=`lpstat -o | cut -d"-" -f1 | sort | uniq -c | sort -r`

  sendEmail
test
fi


Das ganze gibt mir jetzt die Anzahl und die Namen der Drucker geordnet nach anzahl der Jobs Absteigend aus:

Code: Select all

  Toplist:
      7 psa4lab
      3 FilePostScript
      2 g164
      1 psa4pdcad
      1 g606pd
      1 g1e2


Danke für eure Hilfe :)

Mfg
Rattlesnake

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Shell Script zählung von Output

Post by Roger Wilco » 2009-09-11 14:53

Kleiner Tipp: Bei dem letzten sort solltest du noch -n für eine numerische Sortierung anhängen. Das sorgt dafür, dass mehrstellige Zahlen korrekt sortiert werden.

Code: Select all

# echo -e "1n100n10n5n20"
1
100
10
5
20
# echo -e "1n100n10n5n20"|sort
1
10
100
20
5
# echo -e "1n100n10n5n20"|sort -n
1
5
10
20
100