Anzeige:
Ergebnis 1 bis 8 von 8

Thema: bash und printf-Ausgabe: dezimal - oktal

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.09.2005
    Beiträge
    61

    bash und printf-Ausgabe: dezimal - oktal

    Hallo allerseits,
    leider kann ich printf in der bash nicht davon überzeugen, eine Zahl mit führenden Nullen NICHT in eine oktale Zahl umzurechnen.
    Beispiel:
    # printf "%09d\n" 1234 --> Ausgabe: 000001234
    dagegen
    # printf "%09d\n" 0022 --> Ausgabe: 000000018

    Wie kann ich printf sagen, dass 22 nicht zu 18 wird ?

    DANKE für Eure Hilfe !
    Gruss zst

  2. #2
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von zst Beitrag anzeigen
    Hallo allerseits,
    leider kann ich printf in der bash nicht davon überzeugen, eine Zahl mit führenden Nullen NICHT in eine oktale Zahl umzurechnen.
    Beispiel:
    # printf "%09d\n" 1234 --> Ausgabe: 000001234
    dagegen
    # printf "%09d\n" 0022 --> Ausgabe: 000000018

    Wie kann ich printf sagen, dass 22 nicht zu 18 wird ?

    DANKE für Eure Hilfe !
    Gruss zst
    Schau dir mal hexdump an.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.09.2005
    Beiträge
    61
    @Romanday --> Vielen Dank !

    ... aber kennt niemand eine printf-Lösung ?
    hexdump ... da lese ich oktal - hex ... ???
    Gruss zst

  4. #4
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von zst Beitrag anzeigen
    Wie kann ich printf sagen, dass 22 nicht zu 18 wird ?

    DANKE für Eure Hilfe !
    Gruss zst
    printf "%09o\n" 0022
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  5. #5
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Zitat Zitat von zst Beitrag anzeigen
    Hallo allerseits,
    leider kann ich printf in der bash nicht davon überzeugen, eine Zahl mit führenden Nullen NICHT in eine oktale Zahl umzurechnen.
    Eine Zahl mit fuehrender Null wird nicht in eine oktale Zahl umgerechnet; Du gibst vielmehr durch die fuehrende Null an, dass die Zahl als oktaler Wert zu interpretieren ist.
    Zitat Zitat von zst Beitrag anzeigen
    Wie kann ich printf sagen, dass 22 nicht zu 18 wird ?
    Die Frage muesste eigentlich lauten:''Wie kann ich printf sagen, dass 022 nicht zu 18 wird ?''
    Unterdrueck doch die fuehrende(n) Null(en)
    MfG,
    Rainer
    There's nothing a good whack with a hammer won't fix!

  6. #6
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    z.B. mit sowas kriegst du die nullen weg:
    printf "%09d\n" $(expr 0022 + 0)

    MfG Peschmä
    P.S. grauenhaft, ich weiss *ggg
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  7. #7
    Registrierter Benutzer
    Registriert seit
    20.09.2005
    Beiträge
    61
    Hallo und VIELEN DANK an EUCH !!!

    @Romanday: printf "%09o\n" funktioniert nur bei kleinen Zahlen korrekt.

    @rais: Die Frage ... Du hast natürlich Recht! Dein Vorschlag bringt aber die Lösung.

    @peschmae: Besonderen Dank an Dich !!! Das Beispiel mag "grauenhaft" sein, funktioniert aber in meinem Script tadellos. Und das Beste an einer Lösung ist für mich eine Lösung mit Beispiel ! DANKE !

    Gruss zst

  8. #8
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von zst Beitrag anzeigen
    Hallo und VIELEN DANK an EUCH !!!
    Gruss zst
    Shell und Zahlen -a -o Konvertierung, da hast Du immer Theater.
    Es kann sein das dein Script an anderer Stelle hängt.

    Die Shell wurde nicht zum rechnen geschaffen.

    Besser ist so etwas mit awk, python, perl o. php zu lösen.

    Du hast dort schon meist vorgefertigte Funktion für jede
    Art von Konvertierung, und auch keinen Ärger mit eventuellen
    Sonderzeichen.

    Außerdem gibt es für python, perl o. php Zusatzmodule für große
    Zahlen, wenn Du mal das Universum berechnen möchtest.
    Geändert von Romanday (10-09-2006 um 18:16 Uhr)
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •