Якщо я відкрию файли, створені в Windows, всі рядки закінчуються ^M
.
Як я можу видалити цих символів відразу?
Якщо я відкрию файли, створені в Windows, всі рядки закінчуються ^M
.
Як я можу видалити цих символів відразу?
Відповіді:
dos2unix - це утиліта командного рядка, яка зробить це, або :%s/^M//g
якщо ви використовуєте Ctrl- v Ctrl- mдля введення ^ M, або ви можете, :set ff=unix
і vim зробить це за вас.
Документи в налаштуваннях "файловий формат" є тут , а у Вікі-вікі є вичерпна сторінка на рядку, що закінчує перетворення .
Крім того, якщо ви переміщуєте файли багато і назад, ви, можливо, не захочете їх конвертувати, а скоріше робити :set ff=dos
, тому vim дізнається, що це DOS-файл, і використовуватиме конвенції DOS для закінчень рядків.
:%s/^M//g
повинно бути :%s/\r//g
, тому що ^M
просто означає "відповідати капіталу" М "на початку рядка".
:%s/\r//g
працювало для мене, ура @Bunyk
set ff=unix
не вистачає, бо нічого не робить. Можливо, він перетворює файл, але всі ^M
символи все ще є.
Змінення закінчень рядків у поданні:
:e ++ff=dos
:e ++ff=mac
:e ++ff=unix
Це також може бути використане як збереження операції (: w тільки не збережеться за допомогою закінчень рядків, які ви бачите на екрані):
:w ++ff=dos
:w ++ff=mac
:w ++ff=unix
І ви можете використовувати його з командного рядка:
for file in *.cpp
do
vi +':w ++ff=unix' +':q' "$file"
done
:w +ff=unix
настільки приємніше, ніж більшість інших матеріалів, написаних тут, і сценарій bash - приємний бонус.
:e
команди не з'являються , щоб зробити що - небудь на моєму Windows , VIM установки. Мій погляд все ще показує ^M
коди.
Я зазвичай використовую
:%s/\r/\r/g
що здається трохи дивним, але працює завдяки тому, що vim відповідає linefeeds. Мені також легше запам’ятати :)
:set ff=unix
раніше, але файл, який я відкрив сьогодні, мабуть, був особливо дивним. Вім сказав, що це вже було, fileformat=unix
але всі закінчення рядка були ^M
. Це рішення спрацювало на мене.
:%s/\r//g
натомість працює на мене.
:%s/\r//g
- єдине рішення загального призначення - особливо для файлів із змішаним режимом, що містять неоднорідну домішку як нових стилів DOS, так і UNIX. Канонічні рішення (наприклад, :set ff=unix
, :e ++ff=unix
) приймають на себе кожен рядок кінця поточного буфера в тому ж стилі нового рядка. Іноді це роблять; іноді цього не роблять. Cue sadface.
Я вважаю за краще використовувати таку команду:
:set fileformat=unix
Ви також можете використовувати mac
або dos
відповідно конвертувати файл у macintosh або MS-DOS / MS-Windows. І нічого не робить, якщо файл уже в правильному форматі.
Для отримання додаткової інформації див. Довідку vim:
:help fileformat
^M
.
set fileformat=unix
до мого .vimrc-файлу працювало.
:set fileformat=unix
конвертувати з dos в unix.
:%s/\r+//g
У Vim ця смужка повертає всі каретки та залишає лише нові рядки.
:%s/\r//g
нього спрацювало як шарм.
від: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
[Esc]:% s / \ r $ //
@ https://gist.github.com/sparkida/7773170
find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;
також, як згадувалося вище ^ M = Ctrl+V+ Ctrl+M(не просто набирайте символ "^" каретки та M)
dos2unix
може безпосередньо змінювати вміст файлу.
Ви можете безпосередньо використовувати його у файлі, не потребуючи тимчасового перенаправлення файлу.
dos2unix input.txt input.txt
Вище описане використовує передбачувану американську клавіатуру. Використовуйте -
опцію 437 , щоб використовувати клавіатуру Великобританії.
dos2unix -437 input.txt input.txt
tr -d '\15\32' < winfile.txt > unixfile.txt
(див .: http://kb.iu.edu/data/acux.html )
Наступними кроками можна перетворити формат файлу для dos в 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.
Довідка: http://vim.wikia.com/wiki/Change_end-of-line_format_for_dos-mac-unix
Коментар щодо того, щоб з'явити ^ М на появу, - це те, що працювало для мене. Просто набравши "^ М" у моєму ві, нічого не було (не знайдено). CTRL+ V CTRL+M це зробила прекрасно.
Моя робоча команда підстановки була
:%s/Ctrl-V Ctrl-M/\r/g
і це виглядало так на моєму екрані:
:%s/^M/\r/g
:%s
замість :1,$s
. %
це скорочення для 1,$
.
Я знайшов дуже простий спосіб: відкрийте файл з nano: nano file.txt
Натисніть CTRL+, Oщоб зберегти, але перед натисканням Enterнатисніть: ALT+, Dщоб переключити між кінцями рядків DOS та Unix / Linux, або: ALT+, Mщоб переключити між кінцями рядків Mac та Unix / Linux, а потім натисніть Enterдля збереження та CTRL+ Xдля виходу.
^M
закінчення. зберегти як дос, щоб зберегти, зберегти як Linux для видалення. можна перевірити, використовуючиcat -v
Ви можете використовувати:
vim somefile.txt +"%s/\r/\r/g" +wq
або dos2unix utility
.
In vim введіть:
:w !dos2unix %
Це передасть вміст вашого поточного буфера команді dos2unix і запише результати над поточним вмістом. Vim попросить перезавантажити файл після
Зазвичай є dos2unix
команда, яку ви можете використовувати для цього, просто переконайтеся, що ви прочитали посібник, оскільки версії GNU та BSD відрізняються тим, як вони поводяться з аргументами.
Версія BSD:
dos2unix $FILENAME $FILENAME_OUT
mv $FILENAME_OUT $FILENAME
Версія GNU:
dos2unix $FILENAME
Крім того, ви можете створити свій власний dos2unix
з будь-яким із запропонованих тут відповідей, наприклад:
function dos2unix(){
[ "${!}" ] && [ -f "{$1}" ] || return 1;
{ echo ':set ff=unix';
echo ':wq';
} | vim "${1}";
}
Я знав, що десь це бачив. Ось парада для входу в FreeBSD:
Потрібно видалити всі ці ^ М символи з файлу DOS? Спробуйте
tr -d \\r < dosfile > newfile
-- Originally by Dru <genesis@istar.ca>
Хоча ця тема дуже стара, я хотів би поставити ще один матеріал із Вікії:
%s/\r\+$//g
які заповнюють знайдіть усі знаки повернення каретки (одне і більше повторень) до кінця рядка та видаліть, тому просто \n
залишатиметься в eol.
Це мій шлях. Я відкрив файл в dos EOL і коли я збережу файл, який автоматично перетвориться на unix EOL
autocmd BufWrite * :set ff=unix
якщо ви створите файл у NotePad або NotePad ++ у Windows, перенесіть його в Linux і відкриєте його vim, ви побачите ^ M в кінці кожного рядка. Щоб видалити це,
На своєму терміналі Linux введіть
dos2unix filename.ext
Це зробить необхідну магію.
Я хотів нових рядків замість ^ М. Перл на допомогу:
perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt
Або написати в stdout:
perl -p -e 's/\x0d/\n/g' < excel_created.txt
hexdump -C badfile
і бачите0x0d 0x0a
"\r\n"
, це ваша проблема.