Konwersja formatu nowej linii Unix do Windows
Napisał: Patryk Krawaczyński
03/05/2008 w Debug 1 komentarz. (artykuł nr 47, ilość słów: 147)
P
ytanie jest następujące: Mam plik tekstowy napisany w systemie Windows – po przeniesieniu go na system Linux / Unix mam problem z jego normalnym wyświetlaniem konwersją na inne formaty, ponieważ występuje problem ze znakami nowych linii.
Odpowiedź: Pliki tekstowe systemu DOS / Windows posiadają znak CR powrotu karetki (Carriage Return) oraz LF, wysuw wiersza (Line Feed) na końcu każdej linii. Natomiast pliki tekstowe systemu UNIX / Linux posiadają jedynie LF. Aby dokonać konwersji z formatu Windows do Unix należy użyć komendy:
$ sed 's/.$//' plik_windows.txt > plik_unix.txt
Aby dokonać konwersji z formatu Unix do Windows należy użyć komendy:
$ sed -e 's/$/\r/' plik_unix.txt > plik_windows.txt
Warto wspomnieć, że w Slackware istnieją już gotowe programy do przeprowadzania tego typu konwersji. Są nimi fromdos oraz todos. W innych dystrybucjach możemy spotkać się z unix2dos oraz dos2unix (podziękowania dla Yabby za informacje).
Więcej informacji: man sed, unix2dos
Możemy wykonać zamianę rekursywnie dla wielu plików poprzez polecenie: