NFsec Logo

Konwersja formatu nowej linii Unix do Windows

03/05/2008 w Debug 1 komentarz.  (artykuł nr 46, 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

Kategorie K a t e g o r i e : Debug

Tagi T a g i : , , , ,

1 komentarz.

  1. Patryk Krawaczyński napisał(a):

    Możemy wykonać zamianę rekursywnie dla wielu plików poprzez polecenie:

    for file in `find . -type f`; do dos2unix $file $file; done
    

Zostaw odpowiedź.

Musisz być zalogowany by móc komentować.