1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Software und Anwendungen
  3. Betriebssysteme

Shell scripting - Komma einfügen [gelöst]

    • Linux
  • Almlieschen
  • 5. September 2011 um 14:09
  • Unerledigt
  • Almlieschen
    13
    Almlieschen
    Mitglied
    Reaktionen
    8
    Punkte
    1.718
    Beiträge
    304
    • 5. September 2011 um 14:09
    • #1

    Ich beiße mir gerade die Zähne an einem wirklich banalen Problem aus, aber ich kann dazu nichts ergoogeln, weil alle nur das Gegenteil davon haben wollen.

    Mein Problem:
    Ich will eine Textdatei, die Zeilen wie

    Code
    Introduction/7,Black,notBold,notItalic,closed,TopLeftZoom,101,149,0.0

    zeilenweise einlesen, und dann die Zahl hinter dem Slash, im Beispiel also 7, um eins erhöhen (und das ganze wieder ausgeben/in eine Datei schreiben).

    Ich hab zuerst am / getrennt, dann an den Kommas, die Zahl ausgelesen, um eins erhöht, passt. Jedoch kann ich nicht (und das ist für mich gerade wirklich bitter....) wieder die Beistriche printen, also meine Ausgabe sieht so aus:

    Code
    Introduction/8   Black notBold notItalic closed TopLeftZoom 101 149 0.0

    Die Beistriche an den richtigen Stellen brauche ich aber, da sie auch im original Programm so sind. Mit find+replace kann ich das nicht sinnvoll nachbearbeiten, weil manchmal statt "introduction" zwei Worte durch ein Leerzeichen getrennt sind.

    Mein Code sieht folgendermaßen aus (mal ohne in eine Datei zu schreiben):

    Bash
    #!/bin/bash
    
    
    while read myline
    do
      IFS="/"
      set -- $myline
      output1="$1/"
    
    
      IFS=","
      set -- $2
      seite=$[$1+1]
      output2="${output1}$seite,$2,$3,$4,$5,$6,$7,$8,$9"
      echo $output2
    done < $1
    Alles anzeigen

    Und probiert habe ich es mit unterschiedlichen Hochkommas um die Beistriche, Escape von Beistrichen, was weiß ich. *gedemütigt-von-der-shell-bin*

    Btw., ich versuche mit Jpdfbookmarks meiner DA wieder ihren Index zu geben, nachdem ich die Titelseite aus der Fakultät-für-Informatik-Vorlage mit pdftk hinzugefügt habe. Dazu habe ich zuerst die Metadaten des originalpdfs extrahiert, will jetzt jede Seitenangabe um eins erhöhen (eine Titelseite = alles eine Seite weiter hinten), und das ganze dann wieder "dazupappen".
    Also wer eine einfachere Lösung für das hat, dem bin ich auch dankbar :)

    EDIT: Na eh klar, sobald man um Hilfe ruft löst man das Problem dann doch irgendwie selbst...die Shell hasst mich :thinking_face:

    Hier der korrekte Quelltext, schon mit write out some file - Lösung ist, direkt echo zu nehmen, da das mit Kommas keine Probleme hat:

    Bash
    #!/bin/bash
    
    
    while read myline
    do
      IFS="/"
      set -- $myline
      output1="$1/"
    
    
      IFS=","
      set -- $2
      seite=$[$1+1]
      echo "${output1}$seite,$2,$3,$4,$5,$6,$7,$8,$9" >> output.txt
    done < $1
    Alles anzeigen

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

    2 Mal editiert, zuletzt von Almlieschen (5. September 2011 um 14:19) aus folgendem Grund: Gelöst

  • i>u
    2
    i>u
    Mitglied
    Reaktionen
    1
    Punkte
    31
    Beiträge
    6
    • 5. September 2011 um 14:50
    • #2
    Code
    perl -ne '/^([^\/]+\/)(\d+)(.+)$/ && print $1 . ($2+1) . $3 . "\n"' in.txt > out.txt


    :winking_face:

  • Almlieschen
    13
    Almlieschen
    Mitglied
    Reaktionen
    8
    Punkte
    1.718
    Beiträge
    304
    • 5. September 2011 um 14:58
    • #3

    Ist natürlich auch eine Lösung, mit der man sich aber sicher nicht so lange beschäftigen kann wie ich mich mit meinen Kommas :)
    Ja, perl ist schon cooler....sollte ich mir wirklich mal genauer ansehen....

    Ihr glücklichen Augen, Was je ihr gesehen, Es sei wie es wolle, Es war doch so schön!

  • Maximilian Rupp 27. Dezember 2024 um 00:09

    Hat das Thema aus dem Forum Betriebssysteme nach Betriebssysteme verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung