Как удалить ctrl M символов при передаче файлов из окна в unix с помощью Tectia?

Я хочу передать файлы из Windows в Unix с помощью Tectia. Но проблема в том, когда эти файлы передаются (как в Ascii, так и в двоичном режиме) и открываются с использованием VI, мы получаем символы ^ M. Я искал об этом, но решения должны удалить эти символы ^ M, когда файлы передаются с использованием утилиты. Есть ли способ, чтобы эти символы ^ M не отображались в первую очередь.

Ответ 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 называется возвратом каретки.