sed - An Bestimmte Stellen Kommata setzen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von stuxevara, 02.10.2007.

  1. #1 stuxevara, 02.10.2007
    stuxevara

    stuxevara Grünschnabel

    Dabei seit:
    13.08.2007
    Beiträge:
    7
    Zustimmungen:
    0
    Hallöchen,

    ich möchte in einem Textfile mit Hilfe von sed an bestimmte Stellen ein Komma setzen.

    Ich bin soweit, dass ich mit
    Code:
    sed 's/^\(.\)/\1;/' test.txt
    nach der ersten Stelle ein Komma setze.

    Das klappt, auch wenn nach an der zweiten Stelle ein Komma einfügen möchte, kann ich das ja mit
    Code:
    sed 's/^\(..\)/\1;/' test.txt
    machen.

    Soweit, so gut ... nun möchte ich aber gern die Anzahl der Stellen in einer Zahl angeben, da ich unter anderem auch an der 352. Stelle ein Komma brauche.

    Und genau da hört es bei mir auf. Meine bescheidenen RegEx-Kenntnisse sagen mir, dass ich Spannen mit den geschweiften Klammern angebe.

    Aber das schaffe ich nicht wirklich einzubauen und hoffe auf Eure Hilfe.
     
  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 Gott_in_schwarz, 02.10.2007
    Zuletzt bearbeitet: 02.10.2007
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Da braucht man die Variablen-Substitution der benutzten shell. Da die shell die Variable im gleich folgenden sed-Ausdruck Substituieren soll, darf man keine single-, sondern muss double-quotes (afaik) verwenden:
    Code:
    stelle=4
    echo 'blaaaaa blub'|sed "s/^\(.\{${stelle}\}\)/\1;/"
    edit: außerdem ist das ein Semikolon und kein Komma :/
     
  4. #3 stuxevara, 02.10.2007
    stuxevara

    stuxevara Grünschnabel

    Dabei seit:
    13.08.2007
    Beiträge:
    7
    Zustimmungen:
    0
    Vielen Dank - klappt und verstanden hab ichs auch :)

    Ich erlaube mir noch eine zusätzliche Frage: Kann man mit einem Schwung mehrere Semikola setzen?Also an die Stelle 4,8,50 und 90 zB

    {a,b} würde ja einen Bereich angeben.


    Kriegt man das mit einem Ausdruck hin oder muss ich das dann mit einer Schleife (o.ä.) lösen?

    PS: Natürlich meinte ich Semikolon 8)
     
  5. #4 Gott_in_schwarz, 02.10.2007
    Zuletzt bearbeitet: 02.10.2007
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Naja, du könntes das schon in einen Ausdruck 'prügeln', aber dann wäre die Anzahl der Kommata (oder Semikola) fix und nicht variabel, was du wahrscheinlich willst. Deswegen wäre eine Schleife wohl besser.
    Du kannst auch mehrere sed-Kommandos einfach pipen. Bedenke: wenn du an Stelle 50 ein Komma setzen willst und bereits an Stelle 2 eins gesetzt hast, so must du Stelle 51 nehmen, weil ein Zeichen dazugekommen ist.

    Das mit dem Bereich wird so nicht klappen, weil ein Bereich halt genau _einmal_ matcht, und dann kannst du auch nur einmal ein Komma einfügen. Du kannst natürlich mehrere Bereiche machen etc., aber das hab' ich oben ja schon angerissen.

    Ein Beispiel:
    Code:
    line='hihi und blub'
    for i in 4 9 15
        do
            line=$(echo $line|sed "s/^\(.\{${i}\}\)/\1;/")
        done
    
    echo $line
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

sed - An Bestimmte Stellen Kommata setzen

Die Seite wird geladen...

sed - An Bestimmte Stellen Kommata setzen - Ähnliche Themen

  1. Dateien mit bestimmten Rechten erstellen

    Dateien mit bestimmten Rechten erstellen: Hallo, ich möchte, dass Dateien und Ordner auf meinem Server mit bestimmten Rechten erstellt werden. Grund: Ich habe mehrere Samba User und...
  2. Logdatei auswerten und neue Logdatei erstellen => Nur bei bestimmtem Wert

    Logdatei auswerten und neue Logdatei erstellen => Nur bei bestimmtem Wert: Hi Leute, ich bin gerade dabei ein Shell-Script zu schreiben um Logdateien auszuwerten und das Ergebnis in eine neue Datei zu schreiben....
  3. Wie kann ich x Zeichen hinter einem bestimmten Wort ausgeben ?

    Wie kann ich x Zeichen hinter einem bestimmten Wort ausgeben ?: In mehreren Dateien ist immer mehrfach ein bestimmtes Wort enthalten, gefolgt von einem "=". Ich möchte mir die dahinter folgenden 10 Zeichen...
  4. Zeichen an Zeilenanfang für bestimmten Zeilenbereich einfügen

    Zeichen an Zeilenanfang für bestimmten Zeilenbereich einfügen: Hallo, ich würde gerne in einem Textdokument, z.B. von Zeile 10 - 18, an den Zeilenanfang ein # einfügen. Habe mir schon diverse Seiten zu SED...
  5. iptables blocke nur von bestimmter ip

    iptables blocke nur von bestimmter ip: Hallo, ich habe ein kleines Heimnetzwerk mit einem Router unter openWRT. Dort kann ich mittels iptables -I OUTPUT -p udp --dport 53 -m...