The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Определение типа окончания строк (W..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Определение типа окончания строк (W..."  +/
Сообщение от auto_tips (ok) on 19-Авг-12, 22:54 
Ситуация: небольшой Web-проект разрабатывается несколькими людьми на разных ОС: Windows и Linux. В результате в некоторых файлах перевод строк сделан в стиле Windows, в некоторых - в стиле Unix. Неудобство состоит в том, что если какая-то "интеллектуальная" программа поменяет тип перевода строк, система контроля версий Subversion помечает все строки как изменившиеся, и нужны дополнительные усилия чтобы определить реальные изменения. Поэтому было принято решение определить тип перевода строк в каждом файле, и применить соответствующие меры (например, использовать атрибут svn:eol-style в subversion).

Скрипт простой, легко кастомизируется под автоматическую конвертацию (с помощью dos2unix), другие типы файлов, определение стиля Macintosh (в данном случае различается только Windows и Unix):

   for FILE in `find -iname '*.php' -or -iname '*.css' -or -iname '*.js' -or -iname '*.txt' -or -iname '*.xml'` ; do
      echo -n "$FILE ... " ;
      WIN=`grep -P "\r$" $FILE | head`;
      if [ -z "$WIN" ] ; then
         echo "Unix"
      else
         echo "Windows"
      fi
   done

URL:
Обсуждается: http://www.opennet.ru/tips/info/2709.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Определение типа окончания строк (Windows или Unix) для текс..."  +/
Сообщение от Карбофос (ok) on 19-Авг-12, 22:54 
хорошо бы ещё автодетектировать два utf-8  глюкобайта от виндов в начале текстовиков :)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Определение типа окончания строк (Windows или Unix) для текс..."  –1 +/
Сообщение от pavlinux (ok) on 20-Авг-12, 03:07 


TEXT CONVERSION AND SUBSTITUTION:

# IN UNIX ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format.
sed 's/.$//'               # assumes that all lines end with CR/LF
sed 's/^M$//'              # in bash/tcsh, press Ctrl-V then Ctrl-M
sed 's/\x0D$//'            # works on ssed, gsed 3.02.80 or higher

# IN UNIX ENVIRONMENT: convert Unix newlines (LF) to DOS format.
sed "s/$/`echo -e \\\r`/"            # command line under ksh
sed 's/$'"/`echo \\\r`/"             # command line under bash
sed "s/$/`echo \\\r`/"               # command line under zsh
sed 's/$/\r/'                        # gsed 3.02.80 or higher

# IN DOS ENVIRONMENT: convert Unix newlines (LF) to DOS format.
sed "s/$//"                          # method 1
sed -n p                             # method 2

# IN DOS ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format.
# Can only be done with UnxUtils sed, version 4.0.7 or higher. The
# UnxUtils version can be identified by the custom "--text" switch
# which appears when you use the "--help" switch. Otherwise, changing
# DOS newlines to Unix newlines cannot be done with sed in a DOS
# environment. Use "tr" instead.
sed "s/\r//" infile >outfile         # UnxUtils sed v4.0.7 or higher
tr -d \r <infile >outfile            # GNU tr version 1.22 or higher


http://sed.sourceforge.net/sed1line.txt
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Определение типа окончания строк (Windows или Unix) для текс..."  –1 +/
Сообщение от Crazy Alex (ok) on 21-Авг-12, 02:17 
Блин, тут все невесть чем читают... Написано же - им не преобразовывать, а распознавать.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

8. "Определение типа окончания строк (Windows или Unix) для текс..."  +/
Сообщение от pavlinux (ok) on 21-Авг-12, 03:00 
Конвертнуть все в один формат, и нефига распознавать. :)
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Определение типа окончания строк (Windows или Unix) для текс..."  +/
Сообщение от pavlinux (ok) on 21-Авг-12, 03:00 
.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

3. "Определение типа окончания строк (Windows или Unix) для текс..."  +/
Сообщение от Nas_tradamus (ok) on 20-Авг-12, 11:20 
man grep

-P, --perl-regexp
              Interpret PATTERN as a Perl regular expression.  This option  is
              not supported in FreeBSD.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Определение типа окончания строк (Windows или Unix) для текс..."  +/
Сообщение от Crazy Alex (ok) on 20-Авг-12, 13:47 
ну так они его и использовали
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Определение типа окончания строк (Windows или Unix) для текс..."  +/
Сообщение от V (??) on 20-Авг-12, 15:43 
он к тому, что на BSD не работает
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Определение типа окончания строк (Windows или Unix) для текс..."  +/
Сообщение от Crazy Alex (ok) on 21-Авг-12, 02:16 
А, человек читать не умеет... В первой строке написано - Windows и Linux. При чём здесь фря?
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

10. "Определение типа окончания строк (Windows или Unix) для текс..."  +/
Сообщение от Nas_tradamus (ok) on 21-Авг-12, 09:57 
> А, человек читать не умеет... В первой строке написано - Windows и
> Linux. При чём здесь фря?

Я намекаю, что бывают часто ситуации: проект разрабатывается на Windows и Linux (очень частое явление), но КРУТИТСЯ под FreeBSD (что тоже бывает - см. хостинги под ISPmanager/VDSmanager).

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

11. "Определение типа окончания строк (Windows или Unix) для текс..."  +/
Сообщение от ананим on 21-Авг-12, 12:59 
А следующее предложение намекает что у них разработка на винде и линухе с свн.
Что говорит о том, что на хостинг уже не влияет.
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Определение типа окончания строк (Windows или Unix) для текс..."  +/
Сообщение от futu (ok) on 27-Авг-12, 20:29 
в скрипте Unix. а не Linux.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

13. "Определение типа окончания строк (Windows или Unix) для текс..."  +/
Сообщение от Crazy Alex (ok) on 06-Сен-12, 15:27 
угу. Только относится это к типам окончания строк, а не к тому, на чем скрипт крутится.
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру