Forum: Linux-Unix Programmierung
Moderatoren: juergen, Martin ConradThema: [EDIT] - In Datei suchen
[EDIT] - Re: In Datei suchen
Generic1 am 24.09.2010 um 11:57
wenn ich folgendes habe:
myAddress1 name1_3.4.88_test.txt
myAddress1 name1_4.8.7.6_test.txt
myAddress1 name1_2.3.3.4_test.txt
myAddress1 name1_7.3.4_test.txt
dann bekomme ich mit
grep -i myAddress1 ${FILENAME} | awk '/[0-9]/{if($2>a)a=$2}END{print a}
den ersten Eintrag raus, also:
name1_3.4.88_test.txt
ich möchte aber name1_7.3.4_test.txt rausbekommen, da dieser Name von "myAddress1" die höchste Versionsnummer hat (7.3.4).
_test.txt ist immer gleich!!
Könntet ihr mir in diese Richtung noch mal helfen?
Vielen Dank,
lg
Generic1
[EDIT] - Re: In Datei suchen
Patrick am 24.09.2010 um 14:26
grep -i 'myAddress1' DATEI | awk '/[0-9]/{if($2>a)a=$2}END{print a}'
Ergibt bei mir über die Konsole das gewünschte Ergebnis.
Vieleicht stolpert dein Shell-Skript über die Dollar-Zeichen?
@Philip
Zitat:
Da fällt mir gerade ein gutes Rätsel für die Knobelecke ein...
Erst klebrig machen und dann liegen lassen? Ich warte auf dein Rätsel!
--
To follow the path: look to the master, follow the master, walk with the master, see through the master, become the master.
Re: In Datei suchen
broesel (webmaster) am 27.09.2010 um 10:54
Zitat:
@Philip
Zitat:
Da fällt mir gerade ein gutes Rätsel für die Knobelecke ein...
Erst klebrig machen und dann liegen lassen? Ich warte auf dein Rätsel!![]()
Siehe Knobelecke . Hat ein bißchen länger gedauert, weil ich zuerst fragen wollte, wie sich eine entsprechende Sortierung in linearer Zeit durchführen lässt. Aber ich glaube, das ist als Rätsel für die Knobelecke zu schwer.
Gruss,
Philip
--
The C Programming Quiz
- bitte Fragen einreichen :)
Re: In Datei suchen
Generic1 am 27.09.2010 um 15:59
ich hab auch gerade das Problem festgestellt.
Wenn ich jetzt folgenden Datei habe:
myAddress1 name1_8.9.9_test.txt
myAddress1 name4_10.9.9_test.txt
und auf diese Datei folgenden Befehl absetze:
MYNAME=`grep -i myAddress1 ${FILENAME} | awk -F_ '{if($2>a){a=$2;b=$1}} END{split(b,s," ");print s[2]}'`
dann bekomm ich leider "name1" anstatt "name4" zurück. Wenn die Versionsnummern unter 10 sind, dann funktioniert das Ganze einwandfrei.
Weiß jemand wie ich das lösen kann im Shell- Command damit ich "name4" anstatt "name1" zurückbekomme?
Vielen Dank,
lg
