Mam plik, który używa tylko \n
dla nowych linii, ale muszę go mieć \r\n
dla każdej nowej linii. W jaki sposób mogę to zrobić?
Na przykład rozwiązałem go w Vimie :%s/\n/\r\n/g
, ale chciałbym użyć skryptu lub aplikacji wiersza poleceń. Jakieś sugestie?
Próbowałem to sprawdzić za pomocą sed
lub grep
, ale od razu pomyliły mnie obejścia sekwencji ucieczki (jestem trochę zielony z tymi poleceniami).
W razie zainteresowania aplikacja jest powiązana z moim pytaniem / odpowiedzią tutaj
CR
przed każdym LF, tylko przed tymi LF, które nie są jeszcze poprzedzone jednym (i tylko jednym) CR.'\r'
zsed
załatwia sprawę.Właśnie to
unix2dos
robi:To zastąpi
file.txt
na miejscu wersję z zakończeniami linii CRLF.Jeśli chcesz to zrobić
sed
, możesz wstawić znak powrotu karetki na końcu każdej linii:Zastępuje (
s
) obszar o zerowym rozmiarze tuż przed końcem linii ($
) znakiem\r
. Aby dokonać zamiany na miejscu (podobnie jakunix2dos
robi), użyjsed -i.bak
, chociaż jest to niestandardowe rozszerzenie - jeśli go nie masz, użyj pliku tymczasowego.źródło
\r
zastępcze nie jest przenośne. Przynajmniej nie będzie działać w systemie Mac OSX.u2d
,ux2dos
,todos
nakazuje wokół także.Jeśli wykonujesz konwersję na komputerze z systemem Unix (OS X, Linux), otwórz plik za pomocą
vi
lubvim
:naciśnij klawisz ESC, aby upewnić się, że nie jesteś w trybie wstawiania, a następnie wpisz
lub
Dokonuje konwersji w miejscu przez ustawienie formatu pliku.
Aby zapisać plik i wyjść z edytora, użyj
W wierszu poleceń możesz to zrobić
ź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
Przenośna funkcja powłoki, która to zrobi:
Dzięki temu możesz:
źródło
W awk możesz spróbować
Lub
$'\r'
Jest przykładem stylu ANSI-C podając jako obsługiwany przez kilka muszli jakksh93
,bash
,zsh
,mksh
i FreeBSDsh
i mogą być zawarte w numerze 8 Single Unix Specification .Oferuje ogólny sposób wyrażania dziwnych postaci, spróbuj tego, na przykład:
źródło