Variierende Zahl umwandeln (sed?)

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von -eraz-, 05.01.2010.

  1. -eraz-

    -eraz- Tripel-As

    Dabei seit:
    27.03.2008
    Beiträge:
    151
    Zustimmungen:
    0
    Ich verwende einen Zahlenraum zwischen 1 und 365.
    Einzelne Zahlen werden durch ein Skript automatisch weiterverarbeitet. Bei Zahlen zwischen 100 und 365 funktioniert das auch ohne Probleme. Allerdings habe ich bei allen Zahlen unter 100 das Problem, dass diese als

    001
    002
    003
    051
    099

    usw. ausgegeben werden. Die Ausgabe kann ich leider nicht verändern. Ich muss aber irgendwie die Nullen die voranstehen wegbekommen, weil ich das Format so nicht verwenden kann. Kann ich das vielleicht irgendwie per 'sed' oder so machen?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bytepool, 05.01.2010
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    da gibt es Moeglichkeiten en masse. Ein paar Beispiele:

    Code:
    $ a=001
    $ b=098
    $ printf "%d\n" $a
    1
    $ echo $b | tr '0' ' '
     98
    $ echo $a | sed 's/0*//'
    1
    
    Wobei tr wohl am wenigsten elegant ist.

    mfg,
    bytepool
     
  4. -eraz-

    -eraz- Tripel-As

    Dabei seit:
    27.03.2008
    Beiträge:
    151
    Zustimmungen:
    0
    Perfekt, danke :)
    Bin ja mal gespannt wann ich endlich mal selbst hinter sed steige. Irgendwie is das Tool ein Buch mit sieben Siegeln für mich. :D
     
  5. Rvg

    Rvg Doppel-As

    Dabei seit:
    11.07.2004
    Beiträge:
    141
    Zustimmungen:
    0
    weil es so auch gleich alle 0 ersetzt
    Code:
    echo "301" | tr '0' ' '
    > 3 1
    
     
  6. #5 bytepool, 05.01.2010
    Zuletzt bearbeitet: 05.01.2010
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,
    hehe, stimmt, aber wer kann so frueh am Morgen auch erwarten dass das Gehirn schon funktioniert. ;)

    In der bash koennte man die entsprechenden Variablen auch einfach direkt als integer deklarieren:
    Code:
    $ declare -i foo
    $ foo=001
    $ echo $foo
    1
    
    mfg,
    bytepool
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. -eraz-

    -eraz- Tripel-As

    Dabei seit:
    27.03.2008
    Beiträge:
    151
    Zustimmungen:
    0
    Die Variable als integer setzen ist eigentlich die noch schönere Methode, hab's gleich ausprobiert und was abartiges festgestellt. ^^


    Code:
    [root@xxx ]# declare -i xx
    [root@xxx ]# xx=01
    [root@xxx ]# echo $xx
    1
    [root@xxx]# xx=022
    [root@xxx]# echo $xx
    18
    [root@xxx]# xx=23
    [root@xxx]# echo $xx
    23
    [root@xxx]# xx=0234
    [root@xxx]# echo $xx
    156
    [root@xxx]# xx=234
    [root@xxx]# echo $xx
    234
    [root@xxx]# xx=0811
    bash: 0811: value too great for base (error token is "0811")
    
    Warum ist das so?
     
  9. #7 marcellus, 12.08.2010
    marcellus

    marcellus Kaiser

    Dabei seit:
    09.05.2007
    Beiträge:
    1.392
    Zustimmungen:
    0
    Zahlen, die mit 0 anfangen werden wohl als oktalzahlen interpretiert. Also zahlen mit der Basis 8.
    zb
    022= 2*8+2=18
    0234=2*8^2+3*8+4=156

    und das du 0811 nicht eingeben kannst liegt daran, das die Zahlen in der oktalbasis von 0-7 gehen. Wenn du die Basis der zahl festlegen willst kannst du "BASIS#ZAHL" eingeben, also
    Code:
    marcellus@rara ~ $ declare -i nummer
    marcellus@rara ~ $ nummer=0123
    marcellus@rara ~ $ echo $nummer
    83
    marcellus@rara ~ $ nummer=10#0123
    marcellus@rara ~ $ echo $nummer
    123
     
Thema:

Variierende Zahl umwandeln (sed?)

Die Seite wird geladen...

Variierende Zahl umwandeln (sed?) - Ähnliche Themen

  1. Dateien selektieren und zählen

    Dateien selektieren und zählen: Hallo, das ist mein erster Beitrag, bitte entschuldigt, falls nicht alles richtig geschrieben ist. Ich muss meine erste Hausaufgabe als...
  2. »Humble Staff Picks« mit zahlreichen Linux-Spielen

    »Humble Staff Picks« mit zahlreichen Linux-Spielen: Das Humble-Bundle-Team hat ein weiteres »Humble Bundle« geschnürt. Unter dem Titel »Humble Staff Picks« finden sich zahlreiche Spiele, die auch...
  3. Linux Presentation Day 2016.1 in zahlreichen Städten

    Linux Presentation Day 2016.1 in zahlreichen Städten: Am 30. April wollen User Groups, Studenten, Unternehmen und Bildungseinrichtungen in mehr als 80 deutschen Städten den Linux Presentation Day...
  4. Nmap 7.10 mit zahlreichen neuen Skripten und Fingerabdrücken

    Nmap 7.10 mit zahlreichen neuen Skripten und Fingerabdrücken: Der Nmap-Entwickler Gordon »Fyodor« Lyon hat bekannt gegeben, dass eine neue Version des populären, freien Netzwerkscanners veröffentlicht wurde....
  5. Nmap 7.10 mit zahlreichen neuen Skripten und Fingerabdrücken

    Nmap 7.10 mit zahlreichen neuen Skripten und Fingerabdrücken: Der Nmap-Entwickler Gordon »Fyodor« Lyon hat bekannt gegeben, dass eine neue Version des populären, freien Netzwerkscanners veröffentlicht wurde....