(Bash) Führende Nullen vor Zahlen hängen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von loer, 21.11.2009.

  1. loer

    loer Grünschnabel

    Dabei seit:
    21.11.2009
    Beiträge:
    2
    Zustimmungen:
    0
    Servus miteinander,

    um den Effekt zu erreichen, der im Thread genannt ist, habe ich folgendes Script gedrechselt:

    Code:
    #!/bin/bash
    # Schraubt führende Nullen an Zahlen. 
    # Benutzung: nul.sh [Zahl] [Ziffern gesamt]
    
    i=1
    j=1
    string=$1
    
    while [ $1 -lt $((10**$(($2-$i)))) ]
    	do
    		let i+=1
    	done
    
    let i-=1
    
    while [ $j -le $i ]
    	do
    		string=0$string
    		let j+=1
    	done
    
    echo $string
    
    Eine Menge Zeilen für so wenig Nutzen, oder? Daher meine Frage, wie das eleganter zu lösen ist, oder ob es gar ein passendes GNU Tool gibt, welches ich übersehen habe (seq -w nach grep umleiten funktioniert nur leidlich...)

    Gruß,
    Loer
     
  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, 21.11.2009
    bytepool

    bytepool Code Monkey

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

    Code:
    $ zahl=14
    $ stellen=5
    $ printf "%.${stellen}i\n" $zahl
    00014
    
    mfg,
    bytepool
     
  4. #3 slackfan, 21.11.2009
    Zuletzt bearbeitet: 21.11.2009
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Code:
    #!/usr/bin/ruby
    puts ARGV[0].rjust(ARGV[1].to_i, '0')
    
    Da gibt es viele Möglichkeiten. Das ist die Kürzeste, die mir spontan eingefallen ist. Aufruf: ./chuck.rb norris 30

    Edit: Immer dieser Bytepool ;)
     
  5. #4 saeckereier, 21.11.2009
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Ja, der ist nicht schlecht, der bytepool, wa? :-)
     
  6. loer

    loer Grünschnabel

    Dabei seit:
    21.11.2009
    Beiträge:
    2
    Zustimmungen:
    0
    Ja, sowas hatte ich befürchtet. Ich habe zwar noch nicht ganz herausgefunden, was die flags genau machen, aber danke schonmal!
     
  7. #6 bytepool, 21.11.2009
    Zuletzt bearbeitet: 21.11.2009
    bytepool

    bytepool Code Monkey

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

    @slackfan
    Ja, Ruby muss ich irgendwann auch nochmal lernen. :)
    Nur dumm dass der Tag nur 24 Stunden hat, wer immer sich das ausgedacht hat sollte bestraft werden. ;)
    Aber erst stehen auch noch Lisp, Ada, die Python C Bindings und Schwedisch auf dem Programm. ;)

    @loer
    Das bash-builtin printf funktioniert fast genauso wie das printf von C. Dummerweise scheint das dermassen bekannt zu sein, dass die Manpage-Schreiber es nicht wichtig fanden die Formatierungsmoeglichkeiten mit in die Manpage aufzunehmen. ;)
    Aber Google hilft weiter: http://en.wikipedia.org/wiki/Printf#printf_format_placeholders

    Im Grunde ist es aber recht simpel: Das erste Argument ist der Formatierungsstring, die folgenden Argumente die einzusetzenden Werte/Variablen. Das %i besagt dass es eine ganze Zahl sein soll, und %.5i besagt, dass die Zahl mindestens 5 Stellen haben soll. '\n' steht wie immer einfach nur fuer einen Zeilenumbruch.

    Alles weitere bitte der Doku entnehmen. ;)

    mfg,
    bytepool
     
  8. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Das moechte ich gerne zugunsten der bash-Autoren korrigieren. Zumindest steht in der man-page zu printf unter Debian Squeeze: "SEE ALSO printf(3)".
     
  9. #8 bytepool, 23.11.2009
    Zuletzt bearbeitet: 23.11.2009
    bytepool

    bytepool Code Monkey

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

    und, hast du 'man 3 printf' ausprobiert? Mir sagt er dann nur, dass es die Manpage nicht gibt. Ja, ich habe auch gesehen dass 'info coreutils "printf invocation"' ein wenig mehr hergibt, aber trotzdem finde ich, dass man die Formatierungsmoeglichkeiten durchaus nochmal in der printf Manpage selbst wiederholen duerfte. Es ist IMHO wirklich nicht ganz leicht ueber die Standard Dokus an die notwendigen Infos zu kommen, wenn man C's printf nicht kennt.

    Nachtrag:
    Ok, unter Ubuntu bzw. Debian braucht man fuer printf(3) das Paket manpages-dev. Das hat mich jetzt aber auch gut eine halbe Stunde gekostet um dahinter zu kommen in welchem Paket sich die entsprechende Manpage versteckt. ;)

    Eventuell habe ich mich aber auch etwas dumm angestellt, ich habe mit 'apt-file search man3 | less' manuell nach printf gesucht um das richtige Paket zu finden. 'apt-file search printf*3*' haette schneller zum Ziel gefuehrt (eine Variation davon lieferte allerdings gar nix, deswegen der Rundumschlag mit man3 ;)).

    mfg,
    bytepool
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. #9 philluder, 20.08.2010
    philluder

    philluder Grünschnabel

    Dabei seit:
    20.08.2010
    Beiträge:
    1
    Zustimmungen:
    0
    oobash

    Du könntest auch die zfill methode von oobash nutzen (wenn Du bash 4.0 nutzt).
    Beschreibung:
    oo-style String library for bash 4. Written in bash. Support for german umlauts. Simply source and use...

    http://sourceforge.net/projects/oobash/
     
  12. rup

    rup Haudegen

    Dabei seit:
    10.04.2002
    Beiträge:
    627
    Zustimmungen:
    0
    Alternative zur printf Methode

    Code:
    #!/bin/bash
    
    i=1
    while [ $i -lt 101 ] ; do
      j=00$i
      echo ${j:$((-3))}
      i=$(( $i + 1 ))
    done
    
     
Thema: (Bash) Führende Nullen vor Zahlen hängen
Besucher kamen mit folgenden Suchen
  1. ksh führende null einfügen

    ,
  2. zahlen formatiert bash

    ,
  3. bash printf führende nullen

    ,
  4. bash formatierte zahlen,
  5. abap substing führende null anhängen,
  6. linux shell sed zeichen in string einfügen,
  7. bash zahl mit führender null,
  8. bash führende nullen hinzufügen,
  9. bash string mit führenden leerzeichen erstellen,
  10. shell script führendenullen,
  11. bash führende null,
  12. bash mit Zeichen auffüllen,
  13. sco bash führende Null übergeben,
  14. Linux führende Null
Die Seite wird geladen...

(Bash) Führende Nullen vor Zahlen hängen - Ähnliche Themen

  1. FTP-Dateien per Remote löschen (bash)

    FTP-Dateien per Remote löschen (bash): Hallo, ich habe ein Shell-Script (bash), welches per wget Bilder von einem FTP-Server läd. Diese können aber nicht per wget --delete-after...
  2. if abfrage in shell skript (bash)

    if abfrage in shell skript (bash): ich schreibe gerade ein skript für eine vmware (backup) ich weiß es gibt ein schon ein paar skripts da zu aber ich möchte es gerne selber machen...
  3. Open Source auf Tablets und PCs in weiterführenden Schulen in der Region Brüssel

    Open Source auf Tablets und PCs in weiterführenden Schulen in der Region Brüssel: Im Verlauf des Jahres 2013 werden insgesamt bis zu 160 Schulen in Brüssel und Umgebung nicht nur mit neuer Hardware sondern auch mit...
  4. Red Hat übernimmt führende Rolle bei OpenJDK 6

    Red Hat übernimmt führende Rolle bei OpenJDK 6: Oracle hat Anfang März das letzte Update der Entwicklungs- und Laufzeitumgebung von Java 6 veröffentlicht, und empfiehlt das Update auf Java 7....
  5. sed/tr: Zeilenumbruch mit führendem Bindestrich ersetzen

    sed/tr: Zeilenumbruch mit führendem Bindestrich ersetzen: Hi, ich hab mir schon einen Wolf abgesucht im Netz, ich kriegs nicht hin: Eine Text-Datei enthält z.B. folgende 2 Zeilen: ---------- Die...