- Конвертировать CRLF в перевод строки в Linux
- InterMaster.com.ru
- Как я меняю в проектах концы строк с CRLF на LF
- Еще записи по теме
- Как преобразовать новую строку DOS / Windows (CRLF) в новую строку Unix (LF) в сценарии Bash?
- jappy / dos2unix.sh
- This comment has been minimized.
- jappy commented Mar 10, 2012
- Credits
- This comment has been minimized.
- jappy commented Mar 10, 2012
- Usage
- This comment has been minimized.
- jappy commented Mar 10, 2012
- Sed Style
- This comment has been minimized.
- tangshuang commented Jul 27, 2018
- This comment has been minimized.
- uded commented Dec 13, 2018
- This comment has been minimized.
- Muskos commented Nov 27, 2019
- This comment has been minimized.
- This comment has been minimized.
- Muskos commented Nov 28, 2019
Конвертировать CRLF в перевод строки в Linux
Какой лучший способ конвертировать CRLF в перевод строки в файлах в Linux?
Я видел команды sed , но есть ли что-нибудь попроще?
Используйте эту команду:
Эти команды находятся в пакете tofrodos (в большинстве последних дистрибутивов), который также предоставляет две оболочки — unix2dos и dos2unix, которые имитируют старые инструменты unix с тем же именем.
dos2unix — Конвертер форматов текстовых файлов DOS / MAC в UNIX
» как «не». 🙂 но нет, не следую за тобой, хотя я, кажется, сталкиваюсь с тобой часто.
Я предпочитаю Perl :
Но это хорошо подходит для моих целей, и мне очень легко запомнить. Не во всех системах есть команда dos2unix, но большинство, над которыми я работаю, имеют интерпретатор perl.
Другой — перекодирование , мощная замена для dos2unix и iconv; он доступен в пакете «recode» в репозиториях Debian:
Для фанатов awk :
. и sed :
И теперь, только чуть-чуть менее запутанно, чем удаление CR вручную в шестнадцатеричном редакторе, прямо от одного из наших друзей stackoverflow.com , который можно использовать с интерпретатором beef (находится в вашем дружественном соседнем репозитории Debian),
dos2unix в Brainfuck !
Большое спасибо JK за потраченный час его жизни, чтобы написать это!
шарлатан: вот в чем дело: это не проще. это то же самое для вашего Perl ответа. u2d или fromdos / todos — правильные ответы, потому что они проще, чем любые вещи, выраженные на любом другом языке программирования.
Я думаю, что вы также можете использовать tr (хотя у меня нет забавных файлов формата, чтобы попробовать):
Я нашел очень простой способ . Открыть файл с помощью nano: ## nano file.txt
нажмите Ctrl + O для сохранения, но перед нажатием Enter нажмите: Alt + D для переключения между окончаниями строк DOS и Unix / Linux или: Alt + M для переключения между окончаниями Mac и Unix / Linux, затем нажмите Enter для сохранения и Ctrl + X, чтобы выйти.
Я предпочитаю Vim и :set fileformat=unix . Хотя и не самый быстрый, он дает мне предварительный просмотр. Это особенно полезно в случае файла со смешанными окончаниями.
Если вам нужен метод с графическим интерфейсом, попробуйте текстовый редактор Kate (другие продвинутые текстовые редакторы тоже могут с этим справиться). Откройте диалог поиска / замены ( Ctrl + R ) и замените \r\n на \n . (Примечание: вам нужно выбрать «Регулярное выражение» из выпадающего списка и отменить выбор «Только выбор» из опций.)
EDIT: Или, если вы просто хотите конвертировать в формат Unix, то используйте опцию меню Tools > End of Line > Unix .
Вставьте это в скрипт Python dos2unix.py .
Должен работать на любой платформе с установленным Python. Всеобщее достояние.
CR LF с LF использованием AWK :
-v RS=’\r?\n’ устанавливает переменную RS ( input r ecord s eparator) в \r?\n значение, означающее, что input читается строка за строкой, разделенная LF ( \n ), которой может ( ? ) предшествовать CR ( \r ).
1 скрипт, исполняемый awk Сценарий состоит из condition < action >. В этом случае 1 это условие, которое оценивается как истинное. Действие опущено, поэтому выполняется действие по умолчанию, что означает печать текущей строки (которая также может быть записана как
LF в CR LF : Вы можете установить переменную ORS ( о utput г ecord s eparator) , чтобы изменить концы линии выхода. Пример:
Я использовал этот скрипт для файлов, необходимых для экстренной передачи файлов из системы Windows в систему Unix.
Находит все файлы, рекурсивно в каталоге, из которого вы запускаете команду
Передайте его в файловую программу, чтобы получить анализ файла.
Мы хотим только вывод файла, который показывает CRLF.
Получите выход до цвета. откажитесь от всего остального. У нас должно быть только имя файла
Передайте имя файла программе dos2unix, используя xargs .
Источник
InterMaster.com.ru
О бизнесе в интернете, отдыхе в реале и просто о жизни…
Как я меняю в проектах концы строк с CRLF на LF
Иногда бывает такая ситуация – получаешь от заказчика движок для его дальнейшего «допиливания». Пытаешься положить его в репозиторий Git – и получаешь кучу варнингов типа:
Это понятно — файлы в исходнике писались/правились до меня разными людьми и на разных операционных системах. Поэтому в файлах наблюдается полная мешанина в вопросе формата окончания строк.
Небольшая справка для тех, кто не в курсе. В разных операционных системах принят разный формат символов, обозначающий перевод строк:
- Windows — \r\n или CRLF (код 0D0A)
- Unix — \n или LF (код 0A)
- Mac — \r или CR (код 0D).
Такую разносортицу в своем проекте мне держать не хочется, поэтому я предпочитаю перед началом работ приводить все окончания строк к единому виду — \n, он же LF. Почему так? Большинство серверов работают под управлением систем на базе Unix, поэтому, на мой взгляд, логично использовать nix’овые окончания строк и для файлов движка сайта.
Теперь опишу свой способ приведения конца строк к единому виду. Описывать работу буду на примере графической оболочки Git – Git GUI. Так проще и нагляднее.
- Кладу все файлы движка в папку – например, Original.
- Удаляю всякие временные файлы и прочий мусор.
- В пустые папки, которые тем не менее необходимы для работы сайта, кладу файл readme.txt. Это надо по той причине, что Git отслеживает только файлы, а не папки. Поэтому если закоммитить в Git движок с пустыми папками, то потом при выгрузке движка этих пустых, но нужных папок мы не увидим.
- Открываю пункт меню «Редактировать» -> «Настройки» и указываю имя пользователя, email и кодировку файлов проекта.
- В файлах настроек Git – gitconfig — для параметра core прописываю:
- autocrlf = input
- safecrlf = warn
или выполнить команды:
- $ git config —global core.autocrlf input
- $ git config —global core.safecrlf warn
Первый параметр дает команду Git заменить все окончания строк с CRLF в LF при записи в репозиторий.
Второй – выдает предупреждения о конвертации специфических бинарников, если вдруг такие окажутся в движке.
- В результате этой манипуляции у нас на диске C появилась папка Target, в которой лежат файлы из репозитория папки Original. Т.е. в папке Target все концы строк приведены к формату LF или CR.
- Заходим в папку Target, видим в ней папку .git – удаляем эту папку.
- Открываем редактор Notepad++, выбираем пункт меню «Вид» -> «Отображение символов» -> отмечаем «Отображать символ Конец строки». Теперь редактор будет нам показывать символы конца строк.
- Выбираем пункт меню «Поиск» -> «Искать в файлах». В настройках поиска выбираем:
- Режим поиска – Расширенный
- Папка – C:\Target
- Найти — \r
- В итоге мы найдем все файлы, которые имеют концы строк в формате Mac, т.е.\r или CR. Вряд ли их будет много, но иногда встречаются. Открываем каждый файл по очереди в том же редакторе Notepad++. Мы сможем визуально увидеть, что у файла концы строк в формате Mac:
- Преобразуем его в Unix формат. Выбираем «Правка» -> «Формат Конца Строк» -> «Преобразовать в UNIX-формат»
- В итоге файл преобразуется в UNIX-формат.
- Сохраняем файл и выполняем аналогичное преобразование для всех оставшихся файлов в формате Mac. В итоге в папке Target мы будем иметь движок, все файлы которого будут иметь конец строк Unix-формата LF.
Теперь движок можно класть в репозиторий Git. И не забудьте в редакторе, которым выпотом будете править файлы, выставить по умолчанию концовку строк LF, чтобы опять не возникла мешанина.
Еще записи по теме
Такую петлю через git пришлось делать потому что CRLF концов много? Если я правильно понял, во всех файлах можно было сделать «Правка» -> «Формат Конца Строк» -> «Преобразовать в Win-формат»
Admin: да, можно в каждом файле отдельно формат концов строк поменять. Но т.к. файлов очень много, то пока не придумал ничего лучше такого вот «пакетного» изменения сразу во всех файлах.
Спасибо. Долго искал. Изощрённый метод однако
Как раз с данной ошибкой (LF will be replaced by CRLF ) столкнулся, но смотрю что в Нетбинсе «Правка»->»Замена», выбираем что регулярка и пишем с \r\n на \n и оно во всех файлах приведет к линуксовскому виду, ну типа того что вы добились гитом
Все тоже самое что и в статье, только проще, в Notepad++
CTRL-F >> ‘Найти в файлах’
1. Выбираем ‘Режим поиска’ >> ‘Расширенный’
2. В поле ‘Папка’ выбираем папку с проектом
3. В поле ‘Найти’ пишем ‘\r\n’
4. В поле ‘Заменить на’ пишем ‘\n’
5. Жмем ‘Заменить в файлах’
6. После замены возвращаемся к шагу #3 и пишем ‘\r’, жмем заменить
Источник
Как преобразовать новую строку DOS / Windows (CRLF) в новую строку Unix (LF) в сценарии Bash?
Как я могу программно (то есть, не используя vi ) конвертировать переводы DOS / Windows в Unix?
dos2unix И unix2dos команды недоступны на некоторых системах. Как я могу эмулировать их с помощью команд, таких как sed / awk / tr ?
Вы можете использовать tr для преобразования из DOS в Unix; однако вы можете сделать это безопасно только в том случае, если CR появляется в вашем файле только в качестве первого байта пары байтов CRLF. Обычно это так. Затем вы используете:
Обратите внимание, что имя DOS-file отличается от имени UNIX-file ; если вы попытаетесь использовать одно и то же имя дважды, у вас не будет данных в файле.
Вы не можете сделать это наоборот (со стандартным ‘tr’).
Если вы знаете, как ввести возврат каретки в скрипт ( control-V , control-M чтобы ввести control-M), то:
где ‘^ M’ является символом control-M. Вы также можете использовать механизм bash цитирования ANSI-C, чтобы указать возврат каретки:
Однако, если вам придется делать это очень часто (более одного раза, грубо говоря), гораздо разумнее установить программы преобразования (например, dos2unix и unix2dos , или, возможно, dtou и utod ) и использовать их.
Если вам нужно обработать целые каталоги и подкаталоги, вы можете использовать zip :
Это создаст zip-архив с окончаниями строк, измененными с CRLF на CR. unzip затем вернет преобразованные файлы обратно на место (и спросит вас файл за файлом — вы можете ответить: Да для всех). Кредиты @vmsnomad для указания на это.
Источник
jappy / dos2unix.sh
#! /bin/sh |
for x |
do |
echo » Converting $x « |
tr -d ‘ \015 ‘ » $x » > » tmp. $x « |
mv » tmp. $x » » $x « |
done |
This comment has been minimized.
Copy link Quote reply
jappy commented Mar 10, 2012
Credits
This comment has been minimized.
Copy link Quote reply
jappy commented Mar 10, 2012
Usage
Apply to filename.txt
Feel free to wildcard the file:
This comment has been minimized.
Copy link Quote reply
jappy commented Mar 10, 2012
Sed Style
from the sed 1liners.
TEXT CONVERSION AND SUBSTITUTION:
This comment has been minimized.
Copy link Quote reply
tangshuang commented Jul 27, 2018
Well, how to conver files in batch?
This comment has been minimized.
Copy link Quote reply
uded commented Dec 13, 2018
This comment has been minimized.
Copy link Quote reply
Muskos commented Nov 27, 2019
Some problem with script.
./dos2unix.sh: line 6: tmp.filename.js: No such file or directory
This comment has been minimized.
Copy link Quote reply
This comment has been minimized.
Copy link Quote reply
Muskos commented Nov 28, 2019
tr -d ‘\015’ «tmp.$x»
Will script create this tmp file? Will I need to create this tmp file by myself?
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Источник