Anzeige:
Ergebnis 1 bis 14 von 14

Thema: Zeichen in Datei automatisch ersetzen

  1. #1
    Registrierter Benutzer
    Registriert seit
    Dec 2001
    Beiträge
    76

    Zeichen in Datei automatisch ersetzen

    Hallo,

    ich habe eine aus einem Programm automatisch erstellte Textdatei.
    Diese enthält aber in einigen Zeilen an Stelle 87 ein * welches löschen möchte, ohne die restlichen Zeichen zu verschieben.
    Also * quasi durch Leerzeichen ersetzen.
    Oder wie kann ich alles ab der 87 Stelle in jeder Zeile löschen?

    Kann ich das mit einem Script realisieren? Wenn ja wie?

    Danke für Eure Hilfe

    fluppi
    Geändert von fluppi (17.08.05 um 16:35 Uhr)

  2. #2
    Registrierter Benutzer Avatar von buzz768
    Registriert seit
    Apr 2005
    Ort
    Rostock
    Beiträge
    2.016
    Dazu brauchst du kein Script. Alle * in datei.txt durch Leerzeichen ersetzen und das Resultat in die neue Datei datei_neu.txt schreiben geht so:
    Code:
    sed 's/\*/ /g' datei.txt > datei_neu.txt
    Willst du nur die *, die an Stelle 87 stehen, ersetzen, nimm dies:
    Code:
    sed 's/^\(.\{86\}\)\*/\1 /g' datei.txt > datei_neu.txt
    Oder alle Stellen ab der 87ten abscheiden:
    Code:
    cut -b 1-86 datei.txt > datei_neu.txt
    Mit der Option -i kannst du sed auch direkt die Quelldatei ändern lassen, aber obige Methode ist wohl sicherer.

  3. #3
    Registrierter Benutzer
    Registriert seit
    Dec 2001
    Beiträge
    76
    Supi, das hilft mir schon gut weiter.

    Ich denke, ich werde mit der Lösung 3 vorlieb nehmen.
    Wie sieht das aber aus wenn ich mehrere Dateien habe?

    Ich würde gerne das so realisieren.

    Datei 1.txt + Datei2.txt werden an der 38Stelle abgeschnitten.
    und sollen wieder den gleichen Dateinamen haben, wie sie im Original hatten.

    Geht das?

  4. #4
    Registrierter Benutzer Avatar von buzz768
    Registriert seit
    Apr 2005
    Ort
    Rostock
    Beiträge
    2.016
    Klar geht das, kannst doch einfach die neue Datei in die alte umbenennen:
    Code:
    cut -b 1-37 Datei1.txt > Datei1_neu.txt
    mv Datei1_neu.txt Datei1.txt
    Soll das in einem Rutsch passieren kannst du auch sed nehmen:
    Code:
    sed -i 's/^\(.\{37\}\).*/\1/g' Datei1.txt
    Das ganze dann nochmal mit Datei2.txt
    Sollen mehrere Dateien mit einem Befehl manipuliert werden, ist langsam wohl doch ein Script angebracht:
    Code:
    #!/bin/bash
    for file in $@ ; do
      sed -i 's/^\(.\{37\}\).*/\1/g' $file
    done
    Das nennst du dann z.B. meinscript, machst es ausführbar (chmod u+x meinscript) und rufst es dann auf mit
    Code:
    ./meinscript Datei1.txt Datei2.txt
    oder mit so vielen Dateien nacheinander wie du willst.

  5. #5
    Registrierter Benutzer
    Registriert seit
    Sep 2004
    Ort
    127.0.0.1
    Beiträge
    333
    Hi,

    vllt. versteh ich die Frage nicht ... sonst:

    Code:
    cut -b 1-38 datei1.txt > datei1_neu.txt
    cut -b 1-38 datei2.txt > datei2_neu.txt
    mv datei1_neu.txt datei1.txt
    mv dateidatei1_neu.txt datei2.txt
    oder:
    Code:
    for i in datei*.txt;do sed s/"\(.\{38\}\).*"/"\1"/ -i $i;done
    Grüße
    Untergeher


    edit: Zweiter !!!1elf!

  6. #6
    Registrierter Benutzer
    Registriert seit
    Dec 2001
    Beiträge
    76
    Ok, super.
    Was wäre ich ohne Euch bzw. ohne das Board.

    Aber trotzdem habe ich ein noch kniffligeres Problem.
    Aus meinem System kommen Dateien die ich wie folgt anpassen möchte.

    Position 1 Daten1 Länge 20Zeichen ggf. mit Leerzeichen aufzufüllen
    Positon 2 Daten2 Länge 10 Zeichen ggf. mit Leerzeichen aufzufüllen
    Position 3 Daten3 Länge 10 Zeichen.

    So das Problem ist, das Die daten nicht immer an gleicher Stelle stehen.
    Die Datei hat als Satztrenner ";".
    Daten1 steht immer an erster Stelle, ist aber unterschiedlich Lang.
    Dann folgen andere Werte, immer mit ";" halt getrennt.
    Nachdem 19. ";" kommt die Stelle mit den Daten2. Das heisst, ich will einfach dazwischen alles wegkloppen, aber mit den Daten2 an Stelle 21 beginnen.

    Geht das überhaupt?
    Geändert von fluppi (17.08.05 um 19:46 Uhr)

  7. #7
    Registrierter Benutzer
    Registriert seit
    Sep 2004
    Ort
    127.0.0.1
    Beiträge
    333
    Ich raff nicht wie die Datei aussehen soll ... Poste mal die ersten drei oder vier Zeilen ...

  8. #8
    Registrierter Benutzer Avatar von buzz768
    Registriert seit
    Apr 2005
    Ort
    Rostock
    Beiträge
    2.016
    Ich denke das dürfte mit sed und cut zu bewältigen sein. Wenn du häufig mit solchen Aufgaben zu tun hast, lohnt es sich bestimmt, sich mal etwas mit diesen Programmen und mit regulären Ausdrücken zu beschäftigen.

  9. #9
    Registrierter Benutzer
    Registriert seit
    Dec 2001
    Beiträge
    76
    Hier mal ein paar Zeilen als Anhang.

  10. #10
    Registrierter Benutzer
    Registriert seit
    Sep 2004
    Ort
    127.0.0.1
    Beiträge
    333
    ... und was soll dann ausgegeben werden? Eine Liste mit den "Suchbegriff"en? Das ginge so:
    Code:
    cat bestand.txt | sed s/"\(.[^;]*\);.*"/"\1"/

  11. #11
    Registrierter Benutzer
    Registriert seit
    Dec 2001
    Beiträge
    76
    Also es soll der Suchbegriff und der verfügbare Bestand ausgegeben werden.
    Der Verfügbare Bestand soll aber erst an 21.ter Stelle erscheinen.
    Geändert von fluppi (18.08.05 um 19:33 Uhr)

  12. #12
    Registrierter Benutzer
    Registriert seit
    Sep 2004
    Ort
    127.0.0.1
    Beiträge
    333
    Dat raff ich schon wieder nicht. Poste mal die gewünschte Ergebnisdatei zu dem "bestand.txt" oben.

  13. #13
    Agent (Clone #17264) Avatar von Jasper
    Registriert seit
    Jul 2002
    Ort
    The Matrix (Reloaded)
    Beiträge
    3.073
    awk -F';' '{printf "%-19s %s\n", $1, $20}' bestand.txt

    -j
    "Oh my God!" "Smith will suffice" (Agent Smith, Matrix)
    "The first rule of holes is: when you find yourself in one, stop digging." (PJ, Groklaw)

  14. #14
    Registrierter Benutzer
    Registriert seit
    Dec 2001
    Beiträge
    76
    Super, danke, genau das hab ich noch gebraucht.

    Thx
    Fluppi
    Geändert von fluppi (20.08.05 um 12:08 Uhr)

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 15.01.05, 08:43
  2. Programme automatisch starten unter GDM
    Von knoppsie im Forum Windowmanager
    Antworten: 4
    Letzter Beitrag: 11.11.03, 07:40
  3. automatisch in Datei drucken!
    Von NeoR7 im Forum Linux Allgemein
    Antworten: 0
    Letzter Beitrag: 05.02.03, 14:42
  4. RichTextFormat (RTF) Datei in Postscript Datei umwandeln?
    Von sutterp im Forum Anwendungen Allgemein, Software
    Antworten: 6
    Letzter Beitrag: 10.09.02, 07:16
  5. An Andree, meine Modem Geschichte :o)
    Von Holger Krause im Forum Linux Allgemein
    Antworten: 2
    Letzter Beitrag: 01.05.99, 20:48

Lesezeichen

Berechtigungen

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