dos2unix не конвертирует ^M
Я экспортировал результаты в текстовый файл из программы, работающей в Windows 7, и скопировал файл в Xubuntu 14.04. В терминале я побежал dos2unix file.txt
, который говорит мне converting file out_mapqtl.txt to Unix format
, Тем не менее, когда я смотрю на файл с less
Я до сих пор вижу конец строки Windows как ^M, и wc -l
возвращает мне "0".
Я попробовал несколько вещей, описанных здесь, но ни одна из них не работает. Затем я открыл файл в Vim и сделал :%s/\r/\r/g
как объяснил там, который работал нормально. Итак, есть идеи, почему dos2unix не работает? Есть ли способ избежать открытия Vim каждый раз?
4 ответа
\r
обозначает возврат каретки, а на MAC он используется без \n
обозначить разрыв строки. Вы уверены, что файл находится в DOS (\r\n
) формат, а не MAC (\r
)?
Если VIM действительно окажется единственным средством восстановления ваших файлов, вы также можете вызвать его как:
vim somefile.txt +"%s/\r/\r/g" +wq
Это откроет файл, выполнит операцию, сохранит ее, а затем выйдет.
Можете ли вы привести пример файла, чтобы мы могли продолжить расследование?
Я знаю, что вы решили эту проблему, но я хотел добавить примечание для справки, основываясь на результатах моего тестирования.
Если less показывает ^ M, то, как и в Sybren, я подозреваю, что это окончание в стиле MAC (\r), а не DOS (\r\n). Вы можете легко определить это, используя cat:
$ cat -e имя файла
- Окончания Unix (\ n) отображаются как $
- MAC-окончания (\ r) отображаются как ^ M (меньше показывает это)
- Окончания DOS\Windows (\ r \ n) отображаются как ^ M $ (меньше не показывает их)
Используйте dos2unix, чтобы избавиться от концовок DOS (^M$)
Используйте mac2unix, чтобы избавиться от окончаний MAC (^M) - dos2unix не избавится от них.
У меня был файл, в котором мне приходилось использовать dos2unix и mac2unix, чтобы избавиться от всех не-Unix окончаний.
Я использовал функцию Notepad++: Edit>EOL Conversions>Unix(LF).
Теперь экспортируйте этот файл на машину Unix с помощью pscp.exe.
Сообщите мне, сработало ли это для вас.