grep Ergebnis Zeilenweise auswerten

J

Jay-Yellow

Grünschnabel
Hallo zusammen.
Ich bin neu hier und ich hoffe ihr könnt mir bei nem kleinen Problem helfen.

Ich führe einen Grep auf einige Dateien aus und das Ergebnis sind Zahlen.
Ich will jetzt in nem über ein Shellskript die Zahlen vergleichen und die Größte bzw die Kleinste Zahl herrausbekommen.
Nur leider bekomm ich das nicht hin weil ich noch nicht so lange mit Unix arbeite.
Hat da jemand eine Idee?

Falls ihr eure idee selbst schnell testen wollt oder ihr nicht verstanden habt was ich mein:
Datei aa
"G:100"

Datei ab
"G:150"

Datei ac
"G:200"

grep "^G.*" a* | cut -d: f3

Das Ergebnis hier von sind die Zeilen
100
150
200

und jetzt will ich dieses Ergebnis auswerten, hab aber leider keine idee wie.
Bin auch gerne für andere methoden als grep offen, nur kenn ich da keine geeignete.
Das 'G' am anfang der Datei bedeutet übrigens das ich die kleinste suchen muss.
 
kleinste Zahl:
Code:
grep "^G.*" a* | cut -d: -f3 | sort | head -n 1

grösste Zahl:
Code:
grep "^G.*" a* | cut -d: -f3 | sort | tail -n 1

es gibt sicher elegantere Lösungen...

würde auch gehen, braucht statt grep und cut sed:
Code:
sed -e "s/^G://" a* | sort | tail -n 1
 
Zuletzt bearbeitet:
Cool.
Danke!
Und wenn ich das jetzt ner Variablen zuweisen will?
Mit ner normalen zuweisung gehts ja nicht wegen der ".

Und was geht im endeffekt am schnellsten?
 
Und wenn ich das jetzt ner Variablen zuweisen will?
Mit ner normalen zuweisung gehts ja nicht wegen der ".
Neben " gibt es auch '. Die haben zwar ne unterschiedliche Bedeutung, können aber in vielen Fällen ausgetauscht werden. Ansonsten per \" aus-quoten.
Oder (Achtung: backticks!):
Code:
ZAHL=`grep "^G.*" a* | cut -d: -f3 | sort | tail -n 1`
Und was geht im endeffekt am schnellsten?
Selber testen! :D
 
Code:
$time ./skript.sh; time ./skript2.sh
200
Real: 25.94s User: 2.78s System: 2.20s Percent: 19% Cmd: ./skript.sh
200
Real: 32.12s User: 2.87s System: 2.61s Percent: 17% Cmd: ./skript2.sh

Code:
$cat skript.sh 
#!/bin/sh

for ((  i = 0 ;  i <= 1000;  i++  ))
do
  groesste=`sed -e "s/^G://" a* | sort | tail -n 1`
done
groesste=`sed -e "s/^G://" a* | sort | tail -n 1`
echo $groesste

Code:
$cat skript2.sh 
#!/bin/sh

for ((  i = 0 ;  i <= 1000;  i++  ))
do
  groesste=`grep "^G.*" a* | cut -d: -f3 | sort | tail -n 1`
done
groesste=`grep "^G.*" a* | cut -d: -f3 | sort | tail -n 1`
echo $groesste

so wie ich das interpretieren kann ist skript.sh schneller. Aber du kannst es selber noch einmal testen...
 
Vielen dank!
klappt wunderbar, allerdings klappts nur mit grep Fehlerfrei, aber das reicht ja auch.
Echt klasse Leute hier und ne schnelle hilfe!
 

Ähnliche Themen

Server-Monitoring mit RRDTool

Zurück
Oben