Что-нибудь вроде 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++.
Инструкции для рекурсивного преобразования каталога следующие:
- Меню: Поиск → Найти в файлах...
- Каталог = каталог, который вы хотите преобразовать в формат Unix, рекурсивно. Например, C:\MyDir
- Найди что =\r\n
- Заменить на =\n
- Режим поиска = Расширенный
- Нажмите "Заменить в файлах"
Ответ 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 должен храниться в том же каталоге, что и пакетный файл, содержащий эту командную строку.
Чтобы понять используемые команды и то, как они работают, откройте окно командной строки, выполните там следующие команды и полностью прочитайте все страницы справки, отображаемые для каждой команды.
Ответ 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