Frage

habe ich eine Datei aus Windows erzeugt, dass ich in ein Skript unter Linux einzufügen habe. Mein Skript funktioniert gut, mit Ausnahme der Tatsache, dass am Ende jeder Zeile habe ich ein ^ M Zeichen.

Wie kann ich es mit bash entfernen?

Zur Zeit mein Skript ist:

#/bin/bash
IFS=$'\n'
for CUSTOMER in `cat exp.csv`
do
    echo $CUSTOMER
done
War es hilfreich?

Lösung

dos2unix auf exp.csv vor der weiteren Verarbeitung.

Andere Tipps

^ M sollten Fenster Newline sein \ r, daher können Sie einfach alle entfernen müssen \ r Sie können dies erreichen, die tr-Tool, das Sie von Ihrem Bash-Skript aufrufen, das vom Wikipedia-Artikel ist (ich es nicht bestätigen):

tr -d '\r' < inputfile > outputfile

Daher ist aus bash sollte es so etwas wie

sein
VAR=`echo -n $CUSTOMER | tr -d '\r'`

Ich tue dies viel mit tr. Das CR-Zeichen ist 013 in Oktal:

tr -d '\013' < $FILE

So in der Schleife, das wäre nur

for CUSTOMER in `tr -d '\013' < exp.csv`

dos2unix Befehl ont er Datei

Es gibt mehr Möglichkeiten, schlechten char M aus der Datei zu entfernen

  1. verwenden Sie den Befehl dos2unix file_name
  2. offene Datei in Editor vi, gehen Sie zu Befehlsmodus und Typ :%s/ctrl+v ctrl+m//g dies alles schlecht entfernen wird Zeichen von Ihnen Datei. verwenden jetzt :wq für Speichern und Beenden
  3. sed -e "s/^M//" filename(exist file name) > newfilename(new name)

    sed -e "s / ^ M //" Dateiname (exist Dateiname)> newfilename (neuer Name)

Hinweis: schlechte Zeichen auf Unix-Server Hit unter Befehl für alle Java-Dateien zu finden

find . -name "*.java*"  -type f | xargs grep -l ^M *

Ebenso können Sie "*.*" statt "*.java" für alle Arten von Dateien verwenden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top