Конвертируйте окончания строки DOS в окончания строки Linux в vim - PullRequest
648 голосов
/ 17 сентября 2008

Если я открываю файлы, созданные в Windows, все строки заканчиваются на ^M.
Как удалить все эти символы сразу?

Ответы [ 26 ]

1 голос
/ 24 октября 2017

Я знал, что видел это где-то. Вот совет по входу в FreeBSD:

Нужно удалить все эти символы ^ M из файла DOS? Попробуйте

tr -d \\r < dosfile > newfile
    -- Originally by Dru <genesis@istar.ca>
1 голос
/ 30 июля 2009

Обычно есть команда 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}";
}
0 голосов
/ 24 августа 2017

если вы создадите файл в NotePad или NotePad ++ в Windows, переместите его в Linux и откроете его с помощью vim, вы увидите ^ M в конце каждой строки. Чтобы удалить это,

На вашем терминале Linux введите

dos2unix filename.ext

Это сделает требуемую магию.

0 голосов
/ 11 февраля 2017

Я хотел новые строки вместо ^ M. Perl на помощь:

perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt

Или написать на стандартный вывод:

perl -p -e 's/\x0d/\n/g' < excel_created.txt
0 голосов
/ 08 июня 2016

Это мой путь. Я открыл файл в DOS EOL и при сохранении файла, который будет автоматически преобразован в Unix EOL

autocmd BufWrite * :set ff=unix
0 голосов
/ 08 февраля 2016

Хотя эта тема очень старая, я хотел бы добавить еще один материал из Викия:

%s/\r\+$//g

, которые заполняют, находят все знаки возврата каретки (одно и более повторений) до конца строки и удаляют, поэтому просто \n останется на eol.

...