[sed] Zahl mit führenden Nullen auffüllen

Diskutiere [sed] Zahl mit führenden Nullen auffüllen im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo Boar, ich habe folgendes Problem: Im Verzeichnis /var/svn befinden sich Verzeichnisse nach dem Schema "svn-000, svn-001" usw. Ich...

  1. #1 spacebull, 21.07.2006
    spacebull

    spacebull Grünschnabel

    Dabei seit:
    21.07.2006
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo Boar,

    ich habe folgendes Problem:
    Im Verzeichnis /var/svn befinden sich Verzeichnisse nach dem Schema "svn-000, svn-001" usw.
    Ich schreiibe gerade ein Script, welches das nächste freie Verzeichniss erstellt. Also in diesem Fall svn-002. Soweit bin ich bisher:
    Code:
    # ls /var/svn/ | grep svn- | tail -1 | sed s/svn-//g | sed s/0*//g 
    6
    
    Nun muss ich aber die führenden Nullen da wieder hin zauber. Und da verlässt mich meine sed-Weisheit :-( Wisst ihr eventuell Rat? Also 2 soll zu 002 und 42 zu 042 werden.

    Viele Grüße,
    Matze
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    printf sollte Dir helfen:

    Code:
    [~]$ nvar=$(printf "%03d" 5)
    [~]$ echo $nvar
    005
    
    Gruss, Xanti
     
  4. #3 spacebull, 21.07.2006
    spacebull

    spacebull Grünschnabel

    Dabei seit:
    21.07.2006
    Beiträge:
    2
    Zustimmungen:
    0
    Jo Super! Vielen Dank!
     
  5. #4 chris2007, 08.09.2007
    Zuletzt bearbeitet: 08.09.2007
    chris2007

    chris2007 Grünschnabel

    Dabei seit:
    07.09.2007
    Beiträge:
    3
    Zustimmungen:
    0
    sed

    Ich habe hunderte Dateien in denen ich für die durchnummerierten Geräte mit einer Nummer unter zwei Stellen eine führende Null anhängen will.

    Beispieldatei sieht etwa so aus:
    DEVICE "XO_D1_luzi"
    {
    -sync
    -retry
    }

    DEVICE "LOC_D2_zenzi"
    {
    -sync
    -retry
    }
    und so weiter...
    DEVICE "OO_D10_seppi"
    {
    -sync
    -retry
    }
    und so weiter...


    Im Beispiel würde ich also gerne in der Zeile in der das DEVICE genannt wird folgende Änderung haben:

    DEVICE "XO_D01_luzi"
    [...]
    DEVICE "LOC_D02_zenzi"
    [...]
    DEVICE "OO_D10_seppi"

    Habe es mit folgender Syntax versucht

    Code:
    for file in $(ls -1)
    do
    sed -e '/DEVICE/s/_D/&0/g' $file >$file.new
    done
    
    Das hängt mir die 0 aber vorne auch bei zweistelligen Zahlen an.

    DEVICE "XO_D01_luzi"
    [...]
    DEVICE "LOC_D02_zenzi"
    [...]
    DEVICE "OO_D010_seppi"

    Ich möchte nur Einstellige ergänzen. :?
     
  6. #5 angelsfall, 08.09.2007
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Hi,

    es gibt sicher eine schönere Lösung, aber vielleicht reicht dir das ja:
    Code:
    sed -e '/DEVICE/s/\(_D\)\([[:digit:]]_\)/\10\2/g' $file >$file.new
    
    (Und es is spät! :) )
     
  7. #6 chris2007, 08.09.2007
    Zuletzt bearbeitet: 08.09.2007
    chris2007

    chris2007 Grünschnabel

    Dabei seit:
    07.09.2007
    Beiträge:
    3
    Zustimmungen:
    0
    sed

    Code:
    sed: Function /DEVICE/s/\(D_)\([[:digit:]]_\)/\10\2/g cannot be parsed.
    
    Der hier geht ohne Probleme durch, aber überschreibt den hinteren Underscore _

    DEVICE "XO_D01luzi"
    [...]
    DEVICE "LOC_D02zenzi"
    [...]
    DEVICE "OO_D010_seppi"


    Code:
    /DEVICE/s/\(_D\)\([[:digit:]]\)\(_\)/\10\2/g'
     
  8. #7 smg, 08.09.2007
    Zuletzt bearbeitet: 08.09.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    @spaceball:

    Code:
    stephan@unimatrix ~/var/svn :( $ /bin/ls
    svn-000  svn-001  svn-002  svn-003  svn-004  svn-005
    Code:
    /bin/ls | sed -n '${s/^svn-//p}'
    Code:
    stephan@unimatrix ~/var/svn :) $ /bin/ls | sed -n '${s/^svn-//p}'
    005
     
  9. #8 angelsfall, 08.09.2007
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Ja, da fehlt auch ein \ hinter dem D_. Hatte ich so aber auch nicht geschrieben :)

    Ist ja auch klar. \1 und \2 zeigen auf die Matchings aus den ersten beiden Klammern. Wenn dann musst du schon alle drei Referenzen angeben, da du ja 3 Klammern hast. (Oder du machst es wie oben beschrieben ;) )
     
  10. #9 chris2007, 08.09.2007
    chris2007

    chris2007 Grünschnabel

    Dabei seit:
    07.09.2007
    Beiträge:
    3
    Zustimmungen:
    0
    sed

    :oldman
    Jetzt geht mir im hohen Alter endlich doch noch ein Licht auf!

    Danke :):D:)
     
Thema: [sed] Zahl mit führenden Nullen auffüllen
Besucher kamen mit folgenden Suchen
  1. sed zahl mit führenden nullen

    ,
  2. sed mit 0 auffüllen

    ,
  3. regulärer ausdruck führende nullen erzeugen

    ,
  4. Regular expression führende Null,
  5. linux nummer mit 0 auffüllen,
  6. regexp führende nullen erzeugen,
  7. regular expression führende nullen erzeugen,
  8. sed dreistellige zahlen,
  9. linux sed zahl mit 0,
  10. linux sed zahl mit führender 0,
  11. sed zahl dreistellig machen,
  12. regulärer ausdruck mit nullen auffüllen,
  13. regex führende null ergänzen dreistellig,
  14. Sed zahlen 3 stellen erweitern führende null,
  15. bash regex sed suchen ergänzen,
  16. regex nullen auffüllen
Die Seite wird geladen...

[sed] Zahl mit führenden Nullen auffüllen - Ähnliche Themen

  1. Tor-Projekt entlässt zahlreiche Mitarbeiter

    Tor-Projekt entlässt zahlreiche Mitarbeiter: Wie die Verantwortlichen hinter Tor, einem Netzwerk zur Anonymisierung von Verbindungsdaten, bekannt gaben, hat das Projekt rund ein Drittel...
  2. ReactOS 0.4.13 mit zahlreichen Verbesserungen

    ReactOS 0.4.13 mit zahlreichen Verbesserungen: Der Windows-Nachbau ReactOS bringt in Version 0.4.13 eine große Zahl von Änderungen, die auch zu einem stabileren und solideren System führen...
  3. »Humble Sakura Collection« mit zahlreichen Linux-Titeln

    »Humble Sakura Collection« mit zahlreichen Linux-Titeln: Das Humble-Bundle-Team hat ein neues Paket erstellt. Unter dem Titel »The Humble Sakura Collection Bundle« finden sich insgesamt 20 Anime-Spiele,...
  4. Qt: LTS nur noch für zahlende Kunden

    Qt: LTS nur noch für zahlende Kunden: Das zum finnischen Softwareunternehmen Digia gehörende Anwendungs-Framework Qt erfährt 2020 einige wichtige Änderungen. Unter anderem werden...
  5. Wine 5.0 mit zahlreichen Neuerungen

    Wine 5.0 mit zahlreichen Neuerungen: Über ein Jahr nach der Freigabe von Version 4.0 hat das Wine-Projekt die nächste stabile Version der Windows-Laufzeitumgebung veröffentlicht. In...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden