Я хочу передать файлы из Windows в Unix с помощью Tectia. Но проблема в том, когда эти файлы передаются (как в Ascii, так и в двоичном режиме) и открываются с использованием VI, мы получаем символы ^ M. Я искал об этом, но решения должны удалить эти символы ^ M, когда файлы передаются с использованием утилиты. Есть ли способ, чтобы эти символы ^ M не отображались в первую очередь.
Как удалить ctrl M символов при передаче файлов из окна в unix с помощью Tectia?
Ответ 1
Спасибо всем за помощь. Я решил эту проблему, используя обходной путь. Windows использует CR + LF (\ r\n) в качестве конца строки & Unix использует LF (\n) в качестве конца строки. Я взял файл Windows и заменил CR + LF (\ r\n) на LF (\n) в самом коде без какой-либо утилиты. Это сделало файл совместимым для Системы Unix, а затем я передал файл с использованием SFTP, и он работал на Unix.
Ответ 2
Как мне удалось удалить его в редакторе vi:
- После
:%s/
затем нажмите ctrl + V, затем ctrl + M. Это даст вам^M
- Затем
//g
(будет выглядеть так::%s/^M
) нажмите Enter, чтобы удалить все.
Удачи!
Ответ 3
Вы можете установить и использовать dos2unix. После установки просто запустите:
>dos2unix yourfile.txt
Ответ 4
Если вам просто нужно удалить символы ^M
(не заменяйте их на \n
):
sed -i -e 's/\r//g' yourfile.txt
Если вы хотите заменить их на \n
:
sed -i -e 's/\r/\n/g' yourfile.txt
Ответ 5
Еще один трюк для удаления Ctrl + M в редакторе vi:
:%s/^V^M//g
Для получения более трюка удалить Ctrl + M символы
Ответ 6
Попробуйте выполнить следующее в своем терминале (возможно, сначала нужно установить его):
fromdos <your-file>
Ответ 7
:%s/^V^M//
-
g
не требуется вообще. -
%s
- найдите и замените текст, который хотите заменить -
^V^M
, который должен быть заменен на "должен быть после двойного слэша", сохранит его пустым, если вы хотите заменить ничего
Ответ 8
Попробуйте
tr -d '\015' <INPUT_FILE > OUTPUT_FILE
Ответ 9
tr '\015' '\n' < /tmp/file-with-ctrlm.txt > /tmp/no-ctrlm.txt
- Эта команда использует ASCII-код CtrlM и заменяет все CtrlM символами новой строки.
- Он избегает Ctrl-V, Ctrl-M и работает на Mac тоже.
Ответ 10
Для меня это единственная вещь, которая будет работать.. не Unix2dos или что-нибудь...
sed -e 's/\ x0D//g'
ссылка:
Шестнадцатеричный 0a, управляющий символ в отличие от печатного символа, называется переводом строки.
Шестнадцатеричный 0d называется возвратом каретки.