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 каждый раз?
Ответы
Ответ 1
\r
обозначает возврат каретки, а на MAC он используется без \n
для обозначения разрыва строки. Вы уверены, что файл находится в формате DOS (\r\n
), а не MAC (\r
)?
Если VIM действительно оказывается единственным, что восстановит ваши файлы, вы также можете вызвать его как:
vim somefile.txt +"%s/\r/\r/g" +wq
Это откроет файл, выполнит операцию, сохранит ее, а затем закроется.
Можете ли вы привести нам пример файла, чтобы мы могли продолжить исследование?
Ответ 2
Я знаю, что вы получили это решение, но я хотел добавить примечание для справки, основанное на некоторых тестах, которые я сделал.
Если меньше отображается ^ M, то, как и Sybren, я подозреваю, что это конец MAC-стиля (\ r), а не DOS (\ r\n). Вы можете легко определить, используя cat:
$cat -e имя_файла
- Окончания Unix (\n) отображаются как $
- Окончания MAC (\ r) отображаются как ^ M (меньше это показывает)
- DOS\Windows endings (\ r\n) отображаются как ^ M $ (меньше не отображаются)
Используйте dos2unix, чтобы избавиться от окончаний DOS (^ M $)
Используйте mac2unix, чтобы избавиться от окончаний MAC (^ M) - dos2unix не избавится от них.
У меня был файл, где мне пришлось использовать dos2unix и mac2unix, чтобы избавиться от всех окончаний, отличных от Unix.
Ответ 3
Попробуйте следующее:
tr -d '\r' < file
Ответ 4
Попробуйте:
:%s/\r\(\n\)/\1/g
или
:%s/^M//g