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

    Schau dir mal diesen Ratgeber 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 in dieser Kategorie etwas passendes.
    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. Daten für eine Homepage optimieren und verarbeiten?!

    Daten für eine Homepage optimieren und verarbeiten?!: Hi Ihr wisst ja sicher es gibt viele offene Daten die von der Regierung kostenlos zur Verfügung gestellt werden darunter auch "echt zeit daten"....
  2. [gelöst] - for file in ... nur für bestimmte Endungen?

    [gelöst] - for file in ... nur für bestimmte Endungen?: Hallo Zusammen Ich habe einen eigenen Server und das Ziel mittels einem Shell-Skript ein Verzeichnis auf neue Dateien zu überprüfen. Das Skript...
  3. Erweiterbarer Wrapper für GNU find

    Erweiterbarer Wrapper für GNU find: Hallo zusammen, Da ich hier noch einen Account habe, wollte ich mal dieses Forum nutzen, um ganz dreist ein wenig Eigenwerbung zu machen :) Ich...
  4. Suche erweiterbare Audio-APP für 768kHz

    Suche erweiterbare Audio-APP für 768kHz: Kennt jemand eine OS audio APP für den PC, welche höhere Bitraten unterstützt, bzw. die man entsprechend erweitern könnte? Auf dem WIN-Markt habe...
  5. USB-audio host für tablets für VST

    USB-audio host für tablets für VST: Ich suche eine einfache Möglichkeit, Echtzeit-Hardware im Audiobereich mit Daten über die USB-Schnittstelle anzufahren und zu steuern. Es geht...