Shell Script zählung von Output

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Rattlesnake
Beiträge: 17
Registriert: 20.06.2007 09:24:12

Shell Script zählung von Output

Beitrag von Rattlesnake » 10.09.2009 10:43:50

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: Alles auswählen

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
Rattlesnake

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Shell Script zählung von Output

Beitrag von Duff » 10.09.2009 11:40:35

Würde es spontan mal mit awk -F"-" und '{print $1}' probieren. Dies sollte dann mit uniq -c gezählt werden können.
Oh, yeah!

uname
Beiträge: 12425
Registriert: 03.06.2008 09:33:02

Re: Shell Script zählung von Output

Beitrag von uname » 10.09.2009 12:48:42

Etwa so?

Code: Alles auswählen

lpstat -o | cut -d"-" -f1 |uniq -c

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Re: Shell Script zählung von Output

Beitrag von roli » 11.09.2009 09:44:01

uname hat geschrieben:Etwa so?

Code: Alles auswählen

lpstat -o | cut -d"-" -f1 |uniq -c
Da es um die Anzahl ging wuerde ich noch ein "| wc -l" anhaengen ...
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Rattlesnake
Beiträge: 17
Registriert: 20.06.2007 09:24:12

Re: Shell Script zählung von Output

Beitrag von Rattlesnake » 11.09.2009 14:49:01

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: Alles auswählen

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: Alles auswählen

  Toplist:
      7 psa4lab
      3 FilePostScript
      2 g164
      1 psa4pdcad
      1 g606pd
      1 g1e2
Danke für eure Hilfe :)

Mfg
Rattlesnake

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Shell Script zählung von Output

Beitrag von Meillo » 11.09.2009 21:02:35

Rattlesnake hat geschrieben:

Code: Alles auswählen

if [ $NR_OF_JOBS > 10 ]
then
...
Das erscheint mir doch ein Fehler zu sein (oder irgend eine ziemlich unportable Erweiterung).

Es sollte so aussehen:

Code: Alles auswählen

if [ $NR_OF_JOBS -gt 10 ]
then
...
Und Shellvariablen müssen übrigens nicht in Großbuchstaben sein -- sollten sie ja sogar gar nicht, damit sie nicht mit denen des Systems kollidieren.
Use ed once in a while!

Rattlesnake
Beiträge: 17
Registriert: 20.06.2007 09:24:12

Re: Shell Script zählung von Output

Beitrag von Rattlesnake » 14.09.2009 09:26:37

Hi Meillo,

ja das mit dem > Zeichen haben wir auch noch herausgefunden xD hab mich immer gewundert warum er eine Datei mit der zahl 10 als Dateinamen erstellt ^^

Das mit den grossbuchstaben ist einfach eine Angewohnheit, die aber wie du schon sagst net wirklich gut ist :D.

Muss ich mir mal abgewöhnen. Programmier aber erst seit 2 -3 wochen Shell-Script von daher sollte das noch etwas leicher gehen :)

Mfg
Rattlesnake

Antworten