Konwertuj zakończenia linii DOS na zakończenia linii Linuksa w Vimie
Jeśli otwieram pliki utworzone w systemie Windows, wszystkie linie kończą się ^M
.
Jak usunąć wszystkie te znaki na raz?
27 answers
Dos2unix jest narzędziem wiersza poleceń, które to zrobi, lub :%s/^M//g
zrobi to, jeśli użyjesz Ctrl-v Ctrl-m aby wprowadzić ^m, albo możesz {[1] } i Vim zrobi to za Ciebie.
Jest dokumentacja na fileformat Ustawienie, a vim wiki ma obszerną stronę on line ending conversions .
Na przemian, jeśli przenosisz pliki tam iz powrotem często, możesz nie chcieć ich konwertować, ale raczej zrobić :set ff=dos
, więc Vim będzie wiedział, że jest to plik DOS i używa konwencji DOS Dla zakończeń linii.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-25 14:59:25
Zmień zakończenia linii w widoku:
:e ++ff=dos
:e ++ff=mac
:e ++ff=unix
Może to być również użyte jako operacja zapisu (tylko:w nie zapisze przy użyciu zakończeń linii widocznych na ekranie):
:w ++ff=dos
:w ++ff=mac
:w ++ff=unix
I możesz go użyć z wiersza poleceń:
for file in *.cpp
do
vi +':w ++ff=unix' +':q' "$file"
done
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-25 10:46:59
Zazwyczaj używam
:%s/\r/\r/g
Co wydaje się trochę dziwne, ale działa ze względu na sposób, w jaki vim dopasowuje linefeeds. Mi też łatwiej zapamiętać :)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 13:58:36
Wolę użyć następującego polecenia:
:set fileformat=unix
Możesz również użyć mac
lub dos
, aby odpowiednio przekonwertować plik na konwencję plików Mac lub MS-DOS/Windows. I nic nie robi, jeśli plik jest już w odpowiednim formacie.
Aby uzyskać więcej informacji, zobacz Pomoc Vim:
:help fileformat
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 13:55:40
:%s/\r\+//g
W Vimie, który usuwa wszystkie powroty karetki i pozostawia tylko nowe linie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-21 16:05:51
:set fileformat=unix
Aby przekonwertować z DOS-a na Unix-a.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 13:57:01
From: Format Pliku
[Esc]: %s / \r$ / /
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 13:51:35
Konwertuj katalog plików z DOS-a na Unix
Używając wiersza poleceń i sed, Znajdź wszystkie pliki w bieżącym katalogu z rozszerzeniem".ext "i usuń wszystkie" ^M "
@ https://gist.github.com/sparkida/7773170
find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;
Również, jak wspomniano w poprzedniej odpowiedzi, ^m = Ctrl + V + Ctrl + M (nie wpisuj tylko symbolu " ^ " I M).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 14:09:03
dos2unix
może bezpośrednio modyfikować zawartość pliku.
Możesz użyć go bezpośrednio na pliku, bez potrzeby tymczasowego przekierowywania plików.
dos2unix input.txt input.txt
Powyższe używa założonej klawiatury amerykańskiej. Użyj opcji -437
, aby użyć klawiatury UK.
dos2unix -437 input.txt input.txt
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 14:02:17
Następujące kroki mogą przekonwertować format pliku Dla DOS na Unix:
:e ++ff=dos Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix This buffer will use LF-only line endings when written.[A 2]
:w Write buffer using Unix (LF-only) line endings.
Odniesienie: format pliku
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 14:03:47
tr -d '\15\32' < winfile.txt > unixfile.txt
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 14:05:14
Komentarz o pojawianiu się ^m jest tym, co mi się udało. Samo wpisanie "^m " w moim vi nic nie dało (nie znaleziono). CTRL+V CTRL+M Sekwencja zrobiła to doskonale.
Moja robocza Komenda zastępcza to
:%s/Ctrl-V Ctrl-M/\r/g
A na moim ekranie wyglądało to tak:
:%s/^M/\r/g
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-19 20:13:10
Z następującym poleceniem:
:%s/^M$//g
Aby wyświetlić ^M
, wpisz CtrlV a następnie CtrlM . CtrlV mówi Vimowi, aby wziął następny wprowadzony znak dosłownie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 13:50:53
W VIM:
:e ++ff=dos | set ff=unix | w!
W powłoce z VIM:
vim some_file.txt +'e ++ff=dos | set ff=unix | wq!'
e ++ff=dos
- Wymuś otwarcie pliku w formacie dos
.
set ff=unix
- Konwertuj plik do formatu unix
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-03 12:37:03
:g/Ctrl-v Ctrl-m/s///
CtrlM to znak \r
, czyli powrót karetki, który dodają zakończenia linii DOS. CtrlV mówi Vimowi, aby wstawił literał CtrlM znak w wierszu poleceń.
Jako całość, to polecenie zastępuje wszystkie \r
niczym, usuwając je z końców linii.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 13:46:30
Znalazłem bardzo łatwy 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 przełączanie pomiędzy zakończeniami linii DOS i Unix/Linux, lub: Alt+M aby przełączać się między końcami linii Mac i Unix/Linux, a następnie naciśnij Enter , aby zapisać i Ctrl+x to quit.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 15:54:27
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 15:57:19
Aby uruchomić bezpośrednio w konsoli Linuksa:
vim file.txt +"set ff=unix" +wq
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 16:07:07
Możesz użyć następującego polecenia: :%s/^V^M//g
gdzie " ^ " oznacza użycie klawisza CTRL .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-27 10:26:55
Poniższe polecenie służy do przeformatowania wszystkich plików .SH w bieżącym katalogu. Testowałem go na moim Fedorze OS.
for file in *.sh; do awk '{ sub("\r$", ""); print }' $file >luxubutmp; cp -f luxubutmp $file; rm -f luxubutmp ;done
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 14:09:56
In Vim, type:
:w !dos2unix %
Spowoduje przekierowanie zawartości bieżącego bufora do polecenia dos2unix i zapisanie wyników nad bieżącą zawartością. Vim poprosi o ponowne wczytanie pliku po.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 16:06:09
Chciałem newlines w miejsce ^M ' S. Perl na ratunek:
perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt
Lub napisać na stdout:
perl -p -e 's/\x0d/\n/g' < excel_created.txt
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-25 13:18:27
Zazwyczaj istnieje dos2unix
polecenie, którego możesz użyć do tego celu. Upewnij się tylko, że przeczytałeś instrukcję, ponieważ wersje GNU i BSD różnią się w tym, jak radzą sobie z argumentami.
Wersja BSD:
dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME
Wersja GNU:
dos2unix $FILENAME
Alternatywnie, możesz utworzyć własne dos2unix
z dowolną z proponowanych odpowiedzi tutaj, na przykład:
function dos2unix(){
[ "${!}" ] && [ -f "{$1}" ] || return 1;
{ echo ':set ff=unix';
echo ':wq';
} | vim "${1}";
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 14:00:34
Z Wikii:
%s/\r\+$//g
, który znajdzie wszystkie znaki powrotu karetki (jeden i więcej powtórzeń) aż do końca linii i usunie, więc po prostu \n
zostanie na EOL.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 14:12:05
To mój sposób. Otworzyłem plik w DOS EOL i po zapisaniu pliku, który automatycznie przekonwertuje się na Unix EOL:
autocmd BufWrite * :set ff=unix
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 15:56:02
Jeśli utworzysz plik w notatniku lub Notepad++ w systemie Windows, przynieś go do Linuksa i otwórz go przez Vim, zobaczysz ^m na końcu każdej linii. Aby to usunąć,
Na twoim terminalu Linux wpisz
dos2unix filename.ext
To wykona wymaganą magię.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 16:01:10
Wiedziałem, że gdzieś to widziałem. Oto FreeBSD wskazówka logowania:
Czy trzeba usunąć wszystkie znaki ^m z pliku DOS? Try
tr -d \\r < dosfile > newfile
-- Originally by Dru <[email protected]>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-29 16:04:35