Dateiformat [converted][dos]

Problem
Eine automatisch exportierte Datei aus einem Fremdsystem (z.B. SAP) ist auf einem Linux System nicht zur Analyse mittels grep zu nutzen. Wenn die Datei mit dem VI Editor geöffnet wird erscheint [converted][dos] in der VI Statusleiste.



Erster Verdacht
Es handelt sich um eine Datei im Windows/Dos Fromat und am Zeilenende befindet sich ausserdem Linux üblichen Line-Feed auch ein Windows-Typischer Carriage-Return, welcher entfernt werden muss. Allerdings würde das nicht erklären warum die Datei nicht mittels grep zu durch suchen ist.

Um einen Carriage-Return zu entfernen einfach folgendes Kommando anwenden.

Zweiter Verdacht
Die enthaltenen Zeichen sind in einem anderen Zeichensatz als die Zeichen mit welchen der grep sucht.

Dazu ist es hilfreich sich die Datei im Hex-Modus anzuzeigen. Die ersten Zeilen reichen meist aus.

Anschließend erhält man ein Ausgabe wie folgt:

Was einem bei der Ausgabe sofort ins Auge fällt sind die beiden ersten Zeichen 377 und 376, welche nicht sichtbar waren. Des weitern fällt das immer wiedergehrende auftretten von \0 auf. Somit scheint es sich bei den Zeichen um 2-Byte Zeichen zu handeln.

Bei den ersten beiden Zeichen handelt es sich um ein BOM, welcher bei UTF-16 genutzt wird. Somit handelt es sich bei der Datei um eine UTF-16 Datei, deshalb auch die 2-Byte Zeichen.

Lösung
Um die Datei für den grep leserlich zu machen muss die Datei in einen anderen Zeichensatz umgewandelt werden. Dies geschieht mit:

Jetzt sollte der grep oder andere Zeichenoperationen funktionieren.

(Visited 32 times, 1 visits today)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.