Формат перевода строки windows unix

Преобразование окончаний строк Unix в Windows

Недавно я вернулся в Windows из Linux. У меня есть файлы с CRLF, некоторые с LF и некоторые из них смешанные. Есть ли утилита, которая поможет мне найти все мои файлы, связанные с Unix, и преобразовать их в соответствующие файлы с завершенным CRLF?

Утилита должна работать в Windows, а не в Linux. Я уже переехал. Я бы предпочел не устанавливать Cygwin , если я могу его избежать.

12 ответов

Вы можете конвертировать их с помощью утилиты unix2dos на вашей платформе Linux. Существуют версии unix2dos для Windows .

Если у вас установлен Perl, вы также можете использовать этот один вкладыш:

Вот простой и быстрый способ.

Перетащите текстовый файл в Chrome (я не знаю других браузеров), а затем вырезаем и вставляем обратно в исходный файл:)

Например: sfk addcr -dir . -file .txt -norec
изменяет LF-окончания в CR /LF для Windows, на всех .txt-файлах текущего каталога, но НЕ внутри подкаталогов (без рекурсии).

Но эта программа намного больше, чем просто.

В Cygwin вы можете конвертировать между файлами Unix и DOS AKA Windows с помощью двух встроенных утилит:

Преобразование в формат DOS CR /LF:

Преобразуйте обратно в формат Unix CR:

Файл остается на месте с тем же именем.

Я собираюсь бросить это решение там. Гит сделает это. Смотрите это сообщение

Итак, теоретически вы можете сделать это для преобразования всего дерева

Измените crlf на lf , если вы хотите пойти в другую сторону. ПРИМЕЧАНИЕ: вы еще не закончили, продолжайте читать

Введите git status , чтобы увидеть, какие файлы будут затронуты. Возможно, вам придется добавить строки, например

Читайте также:  Mac os поддерживает процессор

и т. д. до .gitattributes , чтобы избежать преобразования определенных файлов. Вы также можете указать определенные файлы как текст

Затем просто повторите эти 2 строки после редактирования .gitattributes

Затем снова используйте git status , чтобы узнать, какие файлы будут изменены. Когда вы уверены, что все файлы, которые вы хотите затронуть, перечислены в git status , а затем зафиксируйте

теперь проверьте все файлы снова

Теперь у них должно быть все, что у вас есть,

** ПРИМЕЧАНИЕ. Если вы уже использовали git, пропустите первые три команды git. Если вы не использовали git, теперь вы можете удалить файл .gitattributes и .git .

** Резервное копирование файлов: git rm —cached -r удаляет их все (хотя они теоретически в вашем git repo (папка .git ), так как они восстанавливаются с помощью последней команды git reset —hard . Просто, поскольку файлы удаляются, лучше всего их резервировать.

В моем дистрибутиве Linux есть две небольшие утилиты: fromdos и todos , которые я использую для этой задачи.

Используйте текстовый редактор, который понимает оба конца строки, например SciTE или Notepad ++ , если вам не нужно преобразовывать всю строку, заканчивающуюся во всех ваших файлах, но просто не хотите видеть весь файл сгруппирован в первую строку.

Существует много способов перевода символов eoln в файлы TEXT, и у каждого есть любимый.

Но я всегда переношу файлы с Linux на Windows в режиме BINARY, затем открываю файлы TEXT в Windows с помощью редактора, способного открывать оба типа, и при необходимости сохранять их в любой форме.

Я использовал редактор файлов Programmers для этого, но Notepad ++ тоже может это сделать. WordPad также полезен [по крайней мере, для просмотра файлов с завершенным LF].

Я думаю о простых текстовых файлах, которые могут возникнуть в Linux, и их нужно читать в стандартном (стандартном) мире Windows. Я не уверен, что вы имели в виду под «unix-touched files».

Чтобы предложить дополнительные параметры (хотя мне больше всего понравился запрос пользователя user45832 ):

Онлайн-преобразователи

Читайте также:  Как узнать сколько у меня установлено windows

Пакетный /DOS однострочный (удаляет пустые строки) :

Powershell:

Получил последние два отсюда

Преобразование окончаний строки Unix в конец строки Windows:

Преобразование окончаний строк Windows в конец строки Unix:

Старые версии awk не включают sub . В таких случаях используйте ту же команду, но замените awk на gawk или nawk .

В Википедии есть решение в cmd:

В PowerShell существуют различные способы сделать это, изменив то, что было сделано в на этом вопросе .

Это также можно сделать в VBScript и JScript , которые также являются инструментами, которые уже доступны в Windows без установки стороннего приложения.

Я использовал, чтобы открыть файл в ‘edit’ и сохранить, поскольку это было выполнено .

Конвертация файлов (Удалить ^M) из Windows в Linux формат

Удалить в тексте ^M необходимо при переносе файлов из Windows в Unix в местах переноса строк появляются символы ^M. Это происходит из-за отличия символов переноса строк в Windows, Unix и MAC.
Форматы текстовых файлов в DOS и в UNIX отличаются:
в DOS строки заканчиваются парой символов CR и LF (возврат каретки /r и перевод строки /n)
в UNIX использует только символ LF перевод строки /n.

Установка dos2unix в Ubuntu:

Просмотрим man команды синтаксис и ключи:

Пример использования dos2unix

Конвентировать файл filein.txt из Windows формата в Unix формат с созданием нового файла fileout.txt :

Конвентировать файл file.txt из Windows формата в Unix формат с замещением существующего файла:

Конвентировать файл filein.txt из Windows CP1252 в Unix UTF-8 (Unicode) fileout.txt :

Конвентировать все файлы с расширением *.txt в текущей директории с сохранением времени создания файлов:

Как преобразовать DOS или Windows перевод строки (возврата каретки и перевода строки) в Unix перевод строки (LF) в bash-скрипт?

Как я могу программно (то есть, не используя vi ) преобразовать DOS/Windows newlines в Unix?

Команды dos2unix и unix2dos недоступны в некоторых системах. Как я могу эмулировать их с помощью таких команд, как sed / awk / tr ?

Ответы — Как преобразовать DOS или Windows перевод строки (возврата каретки и перевода строки) в Unix перевод строки (LF) в bash-скрипт? / How to convert DOS/Windows newline (CRLF) to Unix newline (LF) in a Bash script?

Используя AWK вы можете сделать:

Читайте также:  Как создать другого пользователя windows 10

Используя Perl вы можете сделать:

Вы можете использовать tr для преобразования из DOS в Unix; однако вы можете сделать это безопасно только в том случае, если CR появляется в вашем файле только как первый байт пары байтов CRLF. Так обычно и бывает. Затем вы используете:

Обратите внимание, что имя DOS-file отличается от имени UNIX-file ; если вы попытаетесь использовать одно и то же имя дважды, вы не получите никаких данных в файле.

Вы не можете сделать это наоборот (со стандартным ‘tr’).

Если вы знаете, как ввести возврат каретки в скрипт ( control-V , control-M для ввода control-M), то:

где ‘^M ‘ — это символ control-M. Вы также можете использовать механизм bash ANSI-C Quoting для указания возврата каретки:

Однако, если вам придется делать это очень часто (грубо говоря, несколько раз), гораздо разумнее установить программы преобразования (например dos2unix и unix2dos , или, возможно dtou и utod ) и использовать их.

посмотрите здесь примеры использования sed :

Используйте sed -i для преобразования на месте, например sed -i ‘s/. /’ file .

Решения, опубликованные до сих пор, касаются только части проблемы , преобразования CRLF DOS/Windows в LF Unix; часть, которую они упускают, состоит в том, что DOS использует CRLF в качестве разделителя строк , в то время как Unix использует LF в качестве Терминатора строк . Разница в том, что файл DOS (обычно) не будет иметь ничего после последней строки в файле, в то время как Unix будет. Чтобы правильно провести конвертацию, вам необходимо добавить этот final LF (если только файл не имеет нулевой длины, т. е. в нем вообще нет строк). Мое любимое заклинание для этого (с небольшой добавленной логикой для обработки файлов, разделенных CR в стиле Mac, а не файлов, которые уже находятся в формате unix) — это немного perl:

Обратите внимание, что это отправляет Unixified версию файла в stdout. Если вы хотите заменить файл на Unixified версию, добавьте флаг perl -i .

Оцените статью