Ich lade eine Datei in Variablen, das Problem ist, dass die Datei in Windows formatiert ist, glaube ich, so dass ich eine ^M
anstelle einer neuen Zeile bekomme.
Wie ändere ich es, wenn sich der Wert in der Variablen befindet? Ich bin mir bewusst, dass ich die Quelle in VI ändern kann (ich verwende übrigens OS X), aber ich kann die Originaldatei nicht ändern, sondern nur lesen, daher muss ich die ^M
aus der Variablen entfernen .
Nach meinem Verständnis \n
ist das nicht dasselbe wie ^M
, daher tr
funktioniert der Befehl nicht.
BEARBEITEN
Es scheint, dass die Frage nicht klar ist; Das ist also die Klarstellung.
Ich analysiere die Datei Zeile für Zeile; Jede Zeile hat 2 Werte, die durch Tabulatoren getrennt sind. Am Ende jeder Zeile befindet sich ein ^ M, es sieht folgendermaßen aus:
value1 value2^M
value3 value4^M
value5 value6^M
value7 value8^M
Mein Workflow ist ziemlich einfach und unkompliziert: Die txt-Datei enthält das, was Sie oben sehen, die Schleife separate Felder und für jede Zeile erhalten Sie die Werte; Wenn ich den zweiten Wert drucke, hat er das ^ M, das ich entfernen möchte
while IFS=$'\t' read -r -a line
do
Type1="${line[0]}"
Type2="${line[1]}"
done < $TXTFILE
Was bedeutet, dass es beim Drucken von Typ1 in Ordnung ist, aber die Variable Typ2 enthält das ^ M. Ich habe verwendet tr
und es hat nicht funktioniert, ich habe verwendet sed
, um das letzte Zeichen der Variablen zu entfernen, und es hat nicht funktioniert. Hoffe das klärt meine Frage. Vielen Dank
tr
aber die Frage ist viel zu weit gefasst. Wir wissen nicht, wie die Eingabe oder Ausgabe ist oder wie das Skript aussieht.
sed 's|\r||' file
anstelle vonfile