tr-Befehl für mehrere Dateien

Dieses Thema im Forum "Linux OS" wurde erstellt von turalu, 26.02.2008.

  1. turalu

    turalu Grünschnabel

    Dabei seit:
    26.02.2008
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo,

    vielleicht könnt Ihr mir als Linux-Einsteigerin weiterhelfen:
    Ich möchte in mehreren Dateien alle carriage returns löschen. Dazu habe ich folgenden Befehl gefunden:

    tr -d '\r' < infile.csv > outfile.csv

    Funktioniert mit einer Datei auch prima. Nun will ich den Befehl aber für alle Dateien eines Verzeichnisses ausführen. Kann mir jemand weiterhelfen?

    Danke schonmal!
    turalu
     
  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 Aqualung, 26.02.2008
    Aqualung

    Aqualung Routinier

    Dabei seit:
    12.02.2008
    Beiträge:
    404
    Zustimmungen:
    0
    So:

    Code:
    for datei in *; do  tr -d '\r' < "$datei".csv > "$datei".csv ; done 
    Gruß Aqualung
     
  4. turalu

    turalu Grünschnabel

    Dabei seit:
    26.02.2008
    Beiträge:
    4
    Zustimmungen:
    0
    Danke für den Tipp. Zuerst kam die Meldung: ...V40.csv.csv: no such file or directory
    Also habe ich das '.csv' weggelassen. Dann kam keine Fehlermeldung, aber die Dateien waren hinterher leer. Das Phänomen habe ich schonmal beobachtet, wenn input-Datei=output-Datei war. Ich vermute also, es würde funktionieren, wenn ich die Dateien erst unter anderem Namen speichere, dann die alten lösche und die neuen umbenenne. Leider ist mir die Syntax von deinem Einzeiler nicht ganz klar, deshalb kann ich das nicht ändern: Was hat das mit dem " und $ auf sich?
    Wäre nett, wenn du mir noch einen Hinweis geben könntest. Evtl. auch in welchem Buch (oder auf welcher Homepage) man sowas nachlesen kann.
    Danke!
    turalu
     
  5. #4 Aqualung, 26.02.2008
    Zuletzt bearbeitet: 26.02.2008
    Aqualung

    Aqualung Routinier

    Dabei seit:
    12.02.2008
    Beiträge:
    404
    Zustimmungen:
    0
    Das hier

    Code:
    for datei in *; do  tr -d '\r' < "$datei".csv > "$datei".csv ; done
    war nicht korrekt. Denn wenn in- und outfile gleich heißen ist das Resultat eine leere Datei :))
    $ bezeichnet den INHALT einer Variablen, hier datei.
    Lieber so:

    Code:
    for datei in *; do  tr -d '\r' < $datei > $datei.new ; done
    Die " brauchst Du nur in dem Fall, dass Deine Dateinamen Leerzeichen enthalten.

    Gruß Aqualung
     
  6. turalu

    turalu Grünschnabel

    Dabei seit:
    26.02.2008
    Beiträge:
    4
    Zustimmungen:
    0
    Es kommt zwar die Meldung '$datei: ambiguous redirect', aber es scheint trotzdem zu funktionieren. Zum Löschen und umbenennen habe ich es folgendermassen erweitert:

    for datei in *.csv ; do rm $datei; done #löschen
    for datei in *.csv.new; do mv $datei ${datei%..new}; done #umbenennen

    Ist wahrscheinlich nicht besonders elegant, aber egal :-)
    Danke Dir, Aqualung!

    turalu
     
  7. #6 Jabo, 26.02.2008
    Zuletzt bearbeitet: 26.02.2008
    Jabo

    Jabo Aufgabe ohne Minister

    Dabei seit:
    12.10.2006
    Beiträge:
    1.322
    Zustimmungen:
    0
    Ort:
    Hamburg
    Hallo,

    geht es um Zeilenumbrüche am Ende einer Zeile, wie sie manchmal bei Datenübertragungen vorkommen? Und wie wäre es mal wieder mit sed dafür?

    Im Verzeichnis mit den Dateien:
    Code:
    sed -i -e 's/\(\r\)//' *.csv
    
    Könnte das schon reichen? Mit -i schreibt man direkt in der Datei herum und die ist danach nicht leer...

    Wenn ich diverse DOS-Dateien in ein Verzeichnis kopiere und diesen Befehl drüber bügel (dann mit *.* natürlich weil nicht .csv ..), sind die \r anschließend überall weg..

    [Edit]
    Das "-e" kann auch weg... also sed -i 's/\(\r\)//' *.csv
     
  8. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Dafür gibts doch auch die Programmen 'dos2unix' und 'unix2dos'.
     
  9. Anzeige

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

    turalu Grünschnabel

    Dabei seit:
    26.02.2008
    Beiträge:
    4
    Zustimmungen:
    0
    Hall Jens,

    danke für den Hinweis, der tr-Befehl schien mir einfacher, ich hatte es auch schon mit sed probiert, aber da hatte ich ebenfalls das Problem, dass die Datei leer war, und dass ich nicht wusste, wie ich das für alle dateien eines Verzeichnisses machen kann.

    Wenn ich dich richtig verstanden habe, kann man das Problem mit den leeren Dateien mit der -i-Option beheben, allerdings kommt da bei mir die Meldung:
    'illegal option -- i'
    Weisst du, woher das kommt?
    Ich arbeite vom PC aus über Xwindow auf einer Solaris Maschine.

    Grüße,
    Barbara
     
  11. #9 Aqualung, 26.02.2008
    Aqualung

    Aqualung Routinier

    Dabei seit:
    12.02.2008
    Beiträge:
    404
    Zustimmungen:
    0
    Solaris hat keine GNU-Tools (wie linux), sondern "eigene". Da gibt es feine Unterschiede.

    Gruß Aqualung
     
Thema:

tr-Befehl für mehrere Dateien

Die Seite wird geladen...

tr-Befehl für mehrere Dateien - Ähnliche Themen

  1. SAMBA für Windows10 Domäne einrichten

    SAMBA für Windows10 Domäne einrichten: Hallo, ich habe letztes Wochenende verzweifelt versucht, Samba auf meinem Server einzurichten, daher versuche ich aktuell meinen Fehler zu...
  2. Empfehlung für Server Distribution

    Empfehlung für Server Distribution: Hallo, ich habe hier zu Hause einen kleinen Heimserver, auf welchem ich ein paar Daten für den Zugriff im Haus, einen kleinen Web Service für...
  3. Kleinigkeiten für Euch, mich nicht :-) pkg_add ; DVD rw mounten

    Kleinigkeiten für Euch, mich nicht :-) pkg_add ; DVD rw mounten: Hallo, ich habe 2 Problemchen. Ich kann nichts mehr installieren. Ich brauche aber unbedingt ein Brenn-Programm. Ein schönen Partitionierer usw....
  4. Welche Distri für Programming from the Ground Up

    Welche Distri für Programming from the Ground Up: Hallo! Ich möchter gerne das Buch Programming from the Ground Up durcharbeiten. savannah_nongnu_org/projects/pgubook/ Da geht es um Programmieren...
  5. 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...