Jaki jest najlepszy sposób przekonwertowania CRLF na feedy liniowe w plikach w systemie Linux?
Widziałem komendy sed , ale czy jest coś prostszego?
linux
carriage-return
JoelFan
źródło
źródło
Odpowiedzi:
Użyj tego polecenia:
Odwrotnie:
Te polecenia znajdują się w pakiecie tofrodos (w najnowszych dystrybucjach), który zapewnia także dwa opakowania unix2dos i dos2unix, które naśladują stare narzędzia uniksowe o tej samej nazwie.
źródło
find . -name '*.txt' -print0 | xargs -null fromdos
Zastosowanie
dos2unix
.źródło
Wolę perl :
Ale to dobrze pasuje do moich zastosowań i bardzo łatwo mi to zapamiętać. Nie wszystkie systemy mają polecenie dos2unix, ale większość, nad którymi pracuję, ma interpreter perla.
Kolejnym jest recode , potężny zamiennik dos2unix i iconv; jest dostępny w pakiecie „recode” w repozytoriach Debiana:
Dla fanów awk :
... i sed :
A teraz, tylko nieco mniej skomplikowane niż ręczne usuwanie CR w edytorze szesnastkowym, prosto od jednego z naszych znajomych stackoverflow.com , używanego z interpreterem wołowiny (znajdującym się w przyjaznym sąsiedztwie repozytorium Debiana),
dos2unix in brainfuck !
wielkie podziękowania dla jk za marnowanie godziny życia na napisanie tego!
źródło
Robię to na Bash :
źródło
Myślę, że możesz też użyć
tr
(chociaż nie mam śmiesznych plików w formacie, na których można by spróbować):źródło
W vi lub Vim :
źródło
Znalazłem bardzo prosty sposób… Otwórz plik za pomocą nano: ## nano file.txt
naciśnij Ctrl + O, aby zapisać, ale przed naciśnięciem Enter naciśnij: Alt + D, aby przełączyć między zakończeniami linii DOS i Unix / Linux, lub: Alt + M, aby przełączyć między zakończeniami linii Mac i Unix / Linux, a następnie naciśnij Enter, aby zapisać i Ctrl + X, aby wyjść.
źródło
Alt+d
. Czasami alt zostaje przechwycony przez program terminalowy, więc możesz użyćesc+d
zamiast tego.Wolę Vima i
:set fileformat=unix
. Chociaż nie jest najszybszy, daje mi podgląd. Jest to szczególnie przydatne w przypadku pliku z mieszanymi zakończeniami.źródło
Jeśli potrzebujesz metody GUI, wypróbuj edytor tekstu Kate (inne zaawansowane edytory tekstu również mogą to obsłużyć). Otwórz find / Wymień dialogowe ( Ctrl+ R) i wymienić
\r\n
z\n
. (Uwaga: musisz wybrać „Wyrażenie regularne” z menu rozwijanego i odznaczyć „Tylko zaznaczenie” z opcji).EDIT: Albo, jeśli po prostu chcesz przekonwertować do formatu Unix, a następnie wybierz opcję Menu
Tools
>End of Line
>Unix
.źródło
\r\n
do\n
następnie przy użyciu wyszukiwania / zamiany jest łatwiejsze niż zapamiętywania który używa systemu operacyjnego, który wiersz kończący. ;)Wklej to do skryptu Pyt2unix.py w Pythonie.
Powinien działać na dowolnej platformie z zainstalowanym Pythonem. Domena publiczna.
źródło
CR LF
doLF
korzystania z awk :Przykład użycia:
Wyjaśnienie:
-v RS='\r?\n'
ustawi zmienną R ( wejście R ECORD s eparator) i\r?\n
, wejście oznacza są odczytywane wiersz po wierszu oddzielone LF (\n
), który może (?
) jest poprzedzony (CR\r
).1
jest skrypt wykonywany przez awk. Skrypt składa się zcondition { action }
. W tym przypadku1
jest to warunek, który ocenia true. Akcja jest pomijana, dlatego wykonywana jest akcja domyślna, co oznacza wydrukowanie bieżącego wiersza (który można również zapisać jako{print $0}
zwykłą{print}
).LF
doCR LF
: można ustawić zmiennąORS
( O utput R ECORD s eparator) modyfikacji końców linii wyjścia. Przykład:źródło
Użyłem tego skryptu do plików potrzebnych do awaryjnego przesłania plików z systemu Windows do systemu unix.
find . -type f
Znajduje wszystkie pliki rekurencyjnie w katalogu, z którego uruchomiono polecenie
xargs file
Przekaż go do programu do plików , aby uzyskać analizę pliku.
grep CRLF
Chcemy tylko danych wyjściowych pliku, który pokazuje CRLF.
cut -d: -f1
Doprowadzić wydruk do koloru. odrzuć resztę. Powinniśmy mieć teraz tylko nazwę pliku
xargs dos2unix
Przekaż nazwę pliku do programu dos2unix, używając xargs .
źródło