Jak przekonwertować podziały linii w pliku tekstowym między formatami Windows i Unix / Linux?
Mam środowisko * nix, ale muszę importować i eksportować dane z podziałem linii w stylu Windows. Myślałem, że będzie to standardowe narzędzie lub polecenie, ale nie mogę tego znaleźć.
dos2unix
to waterlan.home.xs4all.nl/dos2unix.html , i działa również w systemie Windows.dos2unix
/unix2dos
na Mac OS X za pomocą Homebrew . Po zainstalowaniu Homebrew polecenie tobrew install dos2unix
korzysta z tej formuły .Jedną z opcji jest użycie
unix2dos
(idos2unix
cofnięcie) w wierszu poleceń.Innym jest użycie edytora tekstu:
Dla vi:: ustaw ff = dos, aby ustawić zakończenia linii na zakończenia linii dos.
Dla emacsa: Cx [ENTER] f dos [ENTER]
Dla twojego ulubionego edytora opartego na GUI (np. Jedit) polecam sprawdzenie instrukcji lub Google.
Na koniec, jeśli nie chcesz zajmować się edytorem tekstu i po prostu zrób to za pomocą bardziej powszechnych narzędzi i takich (lub nie masz zainstalowanego unix2dos):
tr -d '\r' < infile > outfile
przejść z Windows -> Unix,awk 'sub("$", "\r")' unixfile.txt > winfile.txt
aby przejść z Unix -> Windows, ponieważtr
nie można przejść z Unix do Windows.źródło
ff
::e ++ff=unix
. Przynajmniej ma sensdos -> unix
konwersja.Edytuj go w Vimie i użyj
set fileformat
polecenia.MS-DOS / Windows (CR + LF psuje się) do * nix (tylko LF psuje się)
* nix do MS-DOS / Windows
źródło
hexdump -C
- również potwierdzone, że nie jest lepkie - jest ustawione navi
sesjęOto, czego używam, podobnie jak Chealion, do konwersji systemu Windows na zakończenia linii Unix:
źródło
Robienie tego z POSIX jest trudne:
POSIX Sed nie obsługuje
\r
lub\15
. Nawet jeśli tak, opcja na miejscu-i
nie jest POSIXPOSIX awk robi wsparcie
\r
i\15
, jednak-i inplace
opcja ta nie jest POSIXd2u i dos2unix nie są narzędziami POSIX , ale ex jest
POSIX ex nie obsługuje
\r
,\15
,\n
lub\12
Aby usunąć zwroty karetki:
Aby dodać zwrot karetki:
źródło