tr-Befehl für mehrere Dateien

Diskutiere tr-Befehl für mehrere Dateien im Linux OS Forum im Bereich Linux/Unix Allgemein; Hallo, vielleicht könnt Ihr mir als Linux-Einsteigerin weiterhelfen: Ich möchte in mehreren Dateien alle carriage returns löschen. Dazu habe...

  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

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    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. 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
     
  10. #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. Unterstützung für PHP 7.1 endet bald

    Unterstützung für PHP 7.1 endet bald: Die Unterstützung für PHP 7.1 endet endgültig in wenigen Wochen am 1. Dezember. Nach diesem Termin gibt es auch keine Sicherheitsupdates mehr für...
  2. Microsoft bestätigt Edge für Linux

    Microsoft bestätigt Edge für Linux: Wie einer Präsentation von Microsoft entnommen werden kann, plant das Unternehmen den hauseigenen Webbrowser »Edge« künftig auch unter Linux...
  3. Shadow of the Tomb Raider Definitive Edition für Linux und MacOS freigegeben

    Shadow of the Tomb Raider Definitive Edition für Linux und MacOS freigegeben: Nachdem der Spielepublisher Feral Interactive bereits in der Vergangenheit »Tomb Raider« und »Rise of the Tomb Raider« für Linux herausbrachte,...
  4. Veranstaltungsorte für GUADEC 2020 und 2021 stehen

    Veranstaltungsorte für GUADEC 2020 und 2021 stehen: Das Gnome-Projekt lässt seine jährliche Konferenz GUADEC im kommenden Jahr nach Zacatecas in Maxiko kommen. Der Veranstaltungsort der übernächsten...
  5. Firefox Preview für Android erhält Erweiterungen

    Firefox Preview für Android erhält Erweiterungen: Der runderneuerte Firefox für Android, den Mozilla unter dem Namen Firefox Preview vorgestellt hatte, ist laut Mozilla gut angekommen. Nun sollen...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden