Hallo, heut hab ich auch mal eine Frage in Sachen bash-Programmierung: ich habe einen String der folgendes enthällt: "test.bmp 533x117 DirectClass 182kb BMP 0.0u 0:01" - diesen String möchte ich spliiten nach " " - den zweiten Teilstring ("533x117") möchte ich mit "x" als Trenn-Zeichen splitten - nun möchte ich einen numerischen vergleich mit den werten durchführen (zB: "ist x > 1024") Hat jemand eine Idee, wie ich in der bash einen string splitten kann ? Gruß, Daniel. ---------------------------------------------------------------------------- Daniel Stobbe Systems Operator -- #Black Moslem @ The White Nigger Crew (c) 19'th century +++ GMX - Mail, Messaging & more http://www.gmx.net +++ NEU: Mit GMX ins Internet. Rund um die Uhr für 1 ct/ Min. surfen!
Hi, On Thu, 14 Nov 2002, Blake Moslem wrote:
ich habe einen String der folgendes enthällt: "test.bmp 533x117 DirectClass 182kb BMP 0.0u 0:01"
- diesen String möchte ich spliiten nach " " - den zweiten Teilstring ("533x117") möchte ich mit "x" als Trenn-Zeichen splitten - nun möchte ich einen numerischen vergleich mit den werten durchführen (zB: "ist x > 1024")
Hat jemand eine Idee, wie ich in der bash einen string splitten kann ?
Do koenntest cut(1) nehmen, aber da es ein externes Programm ist, ist das langsam. Mit Shell eigenen Mitteln (sogar portabel) geht's ueber $IFS und set: ----- schnipp ----- #! /bin/sh string="test.bmp 533x117 DirectClass 182kb BMP 0.0u 0:01" oldIFS="$IFS" # folgendes ist nicht zwingend notwendig, da IFS per default schon ein # space enthaelt. IFS=" " set dummy $string IFS="$oldIFS" second=$3 echo $second IFS="x" set dummy $second IFS="$oldIFS" x=$2 y=$3 echo $x und $y if test $x -ge 512; then echo "x is >= 512" fi ----- schnapp ----- Ciao, Micha.
Moin,
* Blake Moslem
heut hab ich auch mal eine Frage in Sachen bash-Programmierung:
ich habe einen String der folgendes enthällt: "test.bmp 533x117 DirectClass 182kb BMP 0.0u 0:01"
- diesen String möchte ich spliiten nach " "
echo $string | awk 'awk-Programm'
- den zweiten Teilstring ("533x117") möchte ich mit "x" als Trenn-Zeichen splitten
echo $string | awk '{print $2}' | awk -Fx 'awk-Programm'
- nun möchte ich einen numerischen vergleich mit den werten durchführen (zB: "ist x > 1024")
Hm. bc(1)? Thorsten -- Der Leser hat's gut: Er kann sich seine Schriftsteller aussuchen. - Kurt Tucholsky
Hallo, On Thu, 14 Nov 2002, Blake Moslem wrote:
heut hab ich auch mal eine Frage in Sachen bash-Programmierung:
Eher zu awk *eg* (natuerlich kann man auch perl nehmen ;)
ich habe einen String der folgendes enthällt: "test.bmp 533x117 DirectClass 182kb BMP 0.0u 0:01"
- diesen String möchte ich spliiten nach " "
awk -F' ' (das ist aber default, daher ueberfluessig).
- den zweiten Teilstring ("533x117") möchte ich mit "x" als Trenn-Zeichen splitten - nun möchte ich einen numerischen vergleich mit den werten durchführen (zB: "ist x > 1024")
Hat jemand eine Idee, wie ich in der bash einen string splitten kann ?
In der bash selbst geht's ist aber "aufwaendig"... Besser: man awk! dh@slarty[0]:~ (0)$ echo "test.bmp 533x117 DirectClass 182kb BMP 0.0u 0:01" \ | awk ' BEGIN { t=1024; } /[0-9]x[0-9]/{ gsub(/x.*/,"",$2); h=$2; if(h >= t) { print h " >= t"; } else { print h " < t"; } }' 533 < t dh@slarty[0]:~ (0)$ (ist sogar lesbar _und_ C&P faehig ;) -dnh -- Die einzige relöevante Frage lautet doch hier: "Gibt es Keckse vor und nach dem Tode?" Nun Vor dem Tode ja! Aber was ist mit dem Leben danach? Wo sind sie denn da? Wo sind die KEEEEEEEEECKSE! [WoKo in dag°]
participants (4)
-
Blake Moslem
-
David Haller
-
Michael Matz
-
Thorsten Haude