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

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

20.09.2012 11:39:18 Просмотров 33 Источник

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

У вопроса есть решение - Посмотреть?

Ответы - C# - Как удалить символы ctrl M при переносе файлов из windows в unix с помощью Tectia? / C# - how to remove ctrl M characters when transferring files from windows to unix using Tectia?

alfasin

20.09.2012 11:45:51

Вы можете установить и использовать dos2unix . После установки просто запустите:

>dos2unix yourfile.txt 
https://stackoverflow.com/questions/12508032/c-how-to-remove-ctrl-m-characters-when-transferring-files-from-windows-to-uni/12508133#comment16834579_12508133
привет...Я знаю о утилите dos2unix, но есть ли способ, чтобы эти символы ctrl M не появлялись только?
https://stackoverflow.com/questions/12508032/c-how-to-remove-ctrl-m-characters-when-transferring-files-from-windows-to-uni/12508133#comment16834656_12508133
Unix использует один символ подачи строки (LF) в качестве разрыва строки. Windows / DOS использует 2 символа: возврат каретки / подача строки (CR/LF). Таким образом, ответ-Нет, вы не можете исключить CR\LF (если только вы не напишете весь свой текст в одной строке).
https://stackoverflow.com/questions/12508032/c-how-to-remove-ctrl-m-characters-when-transferring-files-from-windows-to-uni/12508133#comment16878264_12508133
@RaviGoklani я не знаю инструмента windows, который делает такие преобразования, но поскольку вы используете vim, эта статья может вас заинтересовать.
https://stackoverflow.com/questions/12508032/c-how-to-remove-ctrl-m-characters-when-transferring-files-from-windows-to-uni/12508133#comment26476537_12508133
это работало для меня без>, только; то dos2unix yourfile.txt
https://stackoverflow.com/questions/12508032/c-how-to-remove-ctrl-m-characters-when-transferring-files-from-windows-to-uni/12508133#comment26476562_12508133
Знак >это просто подсказка. ;)
Quetzalcoatl

20.09.2012 02:29:04

Попробуйте выполнить следующие действия в вашем терминале (возможно, потребуется сначала установить его):

fromdos <your-file>
https://stackoverflow.com/questions/12508032/c-how-to-remove-ctrl-m-characters-when-transferring-files-from-windows-to-uni/12510754#comment16839469_12510754
на самом деле я не хочу ничего запускать на UNIX после переноса done..no команда, отсутствие утилиты и т. д....просто мой файл должен быть перенесен из Windows в Unix без этих символов ^M
https://stackoverflow.com/questions/12508032/c-how-to-remove-ctrl-m-characters-when-transferring-files-from-windows-to-uni/12510754#comment16867416_12510754
Затем вам нужно убедиться, что вы установили файл в формате UNIX перед отправкой файла. Я считаю, что это EOL (окончания строк), которые вызывают его, любой приличный текстовый редактор позволит вам изменить тип окончания строки.
Является ответом!
Ravi Goklani

28.09.2012 10:23:30

Спасибо всем за помощь. Я решил эту проблему, используя обходной путь. Windows использует CR+LF (\r\n) как конец строки, а Unix использует LF (\n) как конец строки.Я взял файл Windows и заменил вхождение CR+LF (\r\n) на LF(\n) в самом коде без какой-либо утилиты.Это сделало файл совместимым для систем Unix, а затем я перенес файл с помощью SFTP, и он работал на Unix без символов ^M.

Vinoth

10.03.2013 01:31:08

Еще один трюк, чтобы удалить Ctrl + M в VI редакторе:

:%s/^V^M//g

Для более трюк, чтобы удалить сочетание клавиш Ctrl+м символов

Lakshminarayanan

26.10.2013 02:30:56

:%s/^V^M//
  1. gвообще не нужен.

  2. %s-найти и заменить текст, который вы хотите заменить

  3. ^V^Mдля замены на "должно быть после двойной косой черты" держите его пустым, если вы хотите заменить ничем

Rajesh

25.03.2014 02:13:28

Как мне удалось удалить его в vi редакторе:

  • После :%s/затем нажмите ctrl + V, затем ctrl + M . Это даст вам ^M
  • Затем //g(будет выглядеть как::%s/^M) нажмите Enter, чтобы удалить все.

Удачи вам!

https://stackoverflow.com/questions/12508032/c-how-to-remove-ctrl-m-characters-when-transferring-files-from-windows-to-uni/22621696#comment42214000_22621696
этот ввод по ключу абсолютно необходим, так как копирование и вставка не сделают трюк.
https://stackoverflow.com/questions/12508032/c-how-to-remove-ctrl-m-characters-when-transferring-files-from-windows-to-uni/22621696#comment74643006_22621696
Это просто не работает, если вы используете vi из терминала в windows, потому что управляющие символы не работают одинаково. Решение dos2unix является самым простым, если у вас есть возможность установить его (я добавил его в свою среду Docker dev)
Akshay

30.06.2015 11:56:31

Попробуй

tr -d '\015' <INPUT_FILE > OUTPUT_FILE
https://stackoverflow.com/questions/12508032/c-how-to-remove-ctrl-m-characters-when-transferring-files-from-windows-to-uni/31133786#comment50278489_31133786
tr-d '\015 ' <INPUT_FILE > OUTPUT_FILE
JellicleCat

19.08.2016 06:34:17

Если вам просто нужно удалить символы ^M(не заменять их на \n):

sed -i -e 's/\r//g' yourfile.txt

Если вы хотите заменить их на \n:

sed -i -e 's/\r/\n/g' yourfile.txt
Niket

21.08.2019 07:07:01

tr '\015' '\n' < /tmp/file-with-ctrlm.txt > /tmp/no-ctrlm.txt

  • Эта команда использует ASCII-код CtrlM и заменяет все CtrlM символами новой строки.
  • Он избегает Ctrl-V, Ctrl-M и работает также на Mac.
RmccurdyDOTcom

30.09.2019 08:55:39

Для меня это единственное, что может сработать .. не unix2dos или что-то еще ...

sed-e 's / \x0D/ / g'

ссылка:

Шестнадцатеричный 0a, управляющий символ в отличие от печатного символа, называется строчной подачей.

Шестнадцатеричный 0d называется возвратом каретки.

Закрыть X