Что-нибудь вроде dos2unix для Windows?

У меня есть несколько сценариев оболочки, созданных для окон, и я хочу запустить dos2unix для них.

Но поскольку я прочитал, что dos2unix работает в среде Linux, есть ли способ, с помощью которого я могу конвертировать свои файлы в формат UNIX, работая в Windows?

Я уже установил CYGWIN, но у меня возникают некоторые проблемы, такие как

[email protected] ~
$ pwd
/home/Administrator

[email protected] ~
$ cd C:\CVS Code

[email protected] /cygdrive/c/CVS
$ dos2Unix BLPDB000
BLPDB000:
dos2Unix processing BLPDB000: No such file or directory

[email protected] /cygdrive/c/CVS
$ dos2Unix -h
dos2Unix: bad argument -h: unknown option

[email protected] /cygdrive/c/CVS
$ dos2Unix --help
dos2Unix version 0.1.3
  converts the line endings of text files from
  DOS style (0x0d 0x0a) to UNIX style (0x0a)

Usage: dos2Unix [OPTION...] [input file list...]

Main options (not all may apply)
  -A, --auto     Output format will be the opposite of the autodetected source
                 format
  -D, --u2d      Output will be in DOS format
  --unix2dos     Output will be in DOS format
  -U, --d2u      Output will be in UNIX format
  --dos2unix     Output will be in UNIX format
  --force        Ignore binary file detection
  --safe         Do not modify binary files

Help options
  -?, --help     Show this help message
  --usage        Display brief usage message
  --version      Display version information
  --license      Display licensing information

Other arguments
  [input file list...]       for each file listed, convert in place.
                             If none specified, then use stdin/stdout

[email protected] /cygdrive/c/CVS
$

[email protected] /cygdrive/c/CVS
$ dos2Unix  -oBLPDB000
dos2Unix: bad argument -oBLPDB000: unknown option

[email protected] /cygdrive/c/CVS
$ dos2Unix -k BLPDB000
dos2Unix: bad argument -k: unknown option

[email protected] /cygdrive/c/CVS
$ dos2Unix BLPDB000.txt
BLPDB000.txt:
dos2Unix processing BLPDB000.txt: No such file or directory

[email protected] /cygdrive/c/CVS
$ pwd
/cygdrive/c/CVS

Ответ 1

Вы можете использовать Notepad++.

Инструкции для рекурсивного преобразования каталога следующие:

  1. Меню: Поиск → Найти в файлах...
  2. Каталог = каталог, который вы хотите преобразовать в формат Unix, рекурсивно. Например, C:\MyDir
  3. Найди что =\r\n
  4. Заменить на =\n
  5. Режим поиска = Расширенный
  6. Нажмите "Заменить в файлах"

Ответ 2

Если у вас установлен perl, вы можете просто запустить:

perl -i -p -e "s/\r//" <filename> [<filename2> ...]

Ответ 3

Есть как минимум два ресурса:

  • dos2unix на SourceForge, который, по-видимому, активно поддерживается (по состоянию на 2015 год) и имеет предварительно скомпилированные выпуски для Windows, как 32-, так и 64-битные. Также включает в себя unix2dos, mac2unix и unix2mac.
  • CygUtils от GnuWin32, которые являются различными утилитами, разветвленными от Cygwin, который включает в себя dos2unix, а также несколько других связанных утилит. Этот пакет активно не поддерживается (последнее обновление было в 2008 году).

Ответ 4

Я использовал grepWin:

  • Откройте папку с вашими файлами в grepWin
  • В разделе "Поиск"
    • выберите "Поиск по регулярному выражению"
    • Поиск → \r\n
    • Заменить на → \n
  • Нажмите "Поиск", чтобы подтвердить, какие файлы будут затронуты, затем "Заменить".

Ответ 5

Вы используете очень старую версию dos2unix на Cygwin. Cygwin 1.7 изменилась на новую версию dos2unix, то же самое, что поставляется с большинством дистрибутивов Linux примерно два года назад. Поэтому обновите dos2unix с помощью программы установки Cygwin. Проверьте, что вы получаете версию 6.0.3.

Существуют также собственные порты Windows dos2unix, доступные (win32 и win64). См. http://waterlan.home.xs4all.nl/dos2unix.html

С уважением,

Ответ 6

Любой хороший текстовый редактор в Windows поддерживает сохранение текстовых файлов с использованием только перевода строки в качестве завершения строки.

Для автоматического преобразования текстовых файлов из DOS/Windows в окончания строк UNIX может использоваться пакетный файл JREPL.BAT, написанный Дейвом Бенхэмом и представляющий собой гибрид пакетного файла /JScript для выполнения замены регулярного выражения в файле с использованием JScript. даже на Windows XP.

Один файл можно преобразовать из DOS/Windows в UNIX, используя, например:

jrepl.bat "\r" "" /M /F "Name of File to Modify" /O -

В этом случае все возвраты каретки удаляются из файла для изменения. Конечно, было бы также возможно использовать "\r\n" качестве строки поиска и "\n" качестве строки замены, чтобы удалить только возврат каретки, оставленный переводом строки, если файл содержит возврат каретки также где-то еще, что не должно быть удалены при преобразовании ограничителей строки.

Несколько файлы в директории или целого дерево каталогов могут быть преобразованы из DOS/Windows для текстовых файлов UNIX с помощью команды FOR для ЗВОНИТЕ пакетный файл JREPL.BAT на каждый файл соответствующего шаблона шаблона.

Пример пакетного файла для преобразования всех файлов *.sh в текущем каталоге из DOS/Windows в UNIX.

@for %%I in (*.sh) do @call "%~dp0jrepl.bat" "\r" "" /M /F "%%I" /O -

Пакетный файл JREPL.BAT должен храниться в том же каталоге, что и пакетный файл, содержащий эту командную строку.

Чтобы понять используемые команды и то, как они работают, откройте окно командной строки, выполните там следующие команды и полностью прочитайте все страницы справки, отображаемые для каждой команды.

  • jrepl.bat/?
  • call/?
  • for/?

Ответ 7

Решил это через Notepad++.

Перейдите: Редактировать → EOL Conversion → Unix.

Ответ 8

В PowerShell есть так много решений, учитывая множество инструментов на платформе .NET

С путем к файлу в $file = 'path\to\file' мы можем использовать

[IO.File]::WriteAllText($file, $([IO.File]::ReadAllText($file) -replace "'r'n", "'n"))

или

(Get-Content $file -Raw).Replace("'r'n","'n") | Set-Content $file -Force

Чтобы сделать это для всех файлов, просто передайте список файлов указанным выше командам:

Get-ChildItem -File -Recurse | % { (Get-Content -Raw -Path $_.Fullname).Replace ("'r'n", "'n") | Set-Content -Path $_.Fullname }

См

Для больших файлов вы можете использовать решения для буферизации в Заменить CRLF с помощью powershell