Bash-Programmierung - String splitten...

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Schlaubi_fi.de, 11.04.2005.

  1. #1 Schlaubi_fi.de, 11.04.2005
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    Hallo,

    ich habe folgendes Problem. Ich habe eine fortlaufende Nr. z.B. 01234567.
    Am Ende dieser Nr. bzw. des Strings befindet sich sporadisch eine Extension,
    also z.B. 01234567.ext

    Ich möchte nun mit bash/perl/awk/?? den String splitten und zwar, dass .* abgeschnippelt wird; die letzten 2 Ziffern bleiben unberührt und werden ignoriert und ab dann, also (von rechts inkl. ext und . - ab dem 7ten Zeichen) wird der String jeweils zu 2 Ziffern zusammengefasst:

    string=0123456789.ext

    ext=.ext
    x=89.ext

    01-23-45-67


    Ich habe mich in bash bereits versucht, aber das haut einfach nicht hin:
    ${parameter:offset:length}
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 MrFenix, 11.04.2005
    Zuletzt bearbeitet: 11.04.2005
    MrFenix

    MrFenix Executor

    Dabei seit:
    16.10.2004
    Beiträge:
    480
    Zustimmungen:
    0
    Ort:
    Siegen, NRW
    Code:
    #!/bin/bash
    str="0123456789.ext" #sollte klar sein
    ext="${str//[0-9]/}"  #ext = schneide alle Zahlen aus dem String
    echo $ext                # ext ausgeben
    len=`expr length $str` #len = länge vom original
    len2=`expr length $ext` #len2 = länge von der extension
    len3=`expr $len - $len2 - 2` #len3 = länge von allem außer der extension und      den 2 Zahlen am ende
    len2=`expr $len2 + 2` #len2 = länge der extension + die 2 Zahlen am ende
    x=${str:len3:len2} #x = original von vorletzter zahl bis ende
    echo $x # x ausgeben
    for ((a=len3-2; a>=0; a=a-2)) #von position der viertletzten zahl bis 0; immer 2 weniger
    do
        str2="${str:a:2}-$str2" #str2 = original von zählervariable a bis a+2 und -$str2
    done
    str2=${str2/%"-"/} # - am ende wegschneiden
    echo $str2 #str2 ausgeben
    
    Infos genommen von http://www.tldp.org/LDP/abs/html/string-manipulation.html

    EDIT: Noch ne for-schleife reingebaut, damit es auch mit mehr zahlen klappt.
     
  4. #3 Schlaubi_fi.de, 12.04.2005
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    Hey,

    vielen Dank - einfach klasse...für diesen Code hätte ich sogar etwas bezahlt :D
     
  5. #4 Schlaubi_fi.de, 12.04.2005
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    Hallo,

    wenn mir jetzt noch jemand sagen könnte, wie ich folgendes Problem bewerkstellige bin ich glaube ich zufrieden... :devil:

    Wenn ein String ungerade ist, von der Zeichenanzahl,
    dann muss ihm eine Null vorangestellt werden, die Länge des Strings ist variabel. Leider kann die Bash nur Ganzzahlen teilen und bringt auch keine Fehlermeldung wenn die Teilung nicht ganz aufgeht, deshalb schlägt das Folgende fehl...
    Code:
    str=123
    l=${#123}                                          # Länge des Strings = 3
    test "$str" == "$(($l / 2))" && {              # 3 == 1
        echo "str="0"$str";
    } || {
        echo "str=$str";
    }
    
     
  6. #5 MrFenix, 12.04.2005
    Zuletzt bearbeitet: 12.04.2005
    MrFenix

    MrFenix Executor

    Dabei seit:
    16.10.2004
    Beiträge:
    480
    Zustimmungen:
    0
    Ort:
    Siegen, NRW
    Code:
    #!/bin/bash
    str="123" #String halt
    len=`expr length $str` #Länge vom String
    if [ `expr $len % 2` != 0 ]; then #wenn der Rest von Länge geteilt durch 2 ungleich 0
        str="0$str" #dann string = 0 und string
    fi
    echo $str #string ausgeben
    
     
  7. #6 Schlaubi_fi.de, 23.04.2005
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    Vielen Dank, hat einwandfrei funktioniert :))
     
Thema: Bash-Programmierung - String splitten...
Besucher kamen mit folgenden Suchen
  1. bash strings splitten

    ,
  2. bash string splitten

    ,
  3. bash zahl in ziffern zerlegen

    ,
  4. bash string aufsplitten
Die Seite wird geladen...

Bash-Programmierung - String splitten... - Ähnliche Themen

  1. Hilfe in Bash-Programmierung

    Hilfe in Bash-Programmierung: Hallo, Bin Neuling was der Shellprogrammierung anbelangt. Gibt es eine Möglichkeit in einem Bash-Script einen Goto-Befehl nachzubilden? Ich...
  2. FIND mit UND-Verknüpfung im Suchstring

    FIND mit UND-Verknüpfung im Suchstring: Hallo, ich schaffe es einfach nicht bei folgendem Kommando die Suchoptionen zu erweitern, damit nur Dateien beginnend mit "T_*" aufgelistet...
  3. String auf Konsole ausgeben

    String auf Konsole ausgeben: Hallo zusammen, ich bin auf ein Problem gestoßen dass für mich sehr unverständlich ist, aber vllt übersehe ich auch etwas Offensichtliches. Es...
  4. String einer bestimmten Zeile durchsuchen

    String einer bestimmten Zeile durchsuchen: Hallo, wie kann ich den eine bestimmte Zeile einer Textdatei zerlegen und daraus ein Stück entnehmen? Ich suche nach der Zeile in der "model...
  5. alles außer letzte 4 strings

    alles außer letzte 4 strings: Hallo, ich habe verschieden lange Strings (Dateinamen) und möchte gerne den Dateinamen als Variable ausgeben: 1. Strings...