Строки

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
Всем привет.
ребята подскажите как разбить файл на строки если в конце каждой строки вместо CR LF просто LF
Пример:

120.192.101.58 - - [09/Oct/2016:19:13:30 +0300] "GET /forum/profile.php?id=62934 HTTP/1.0" 403 633
192.3.144.46 - - [09/Oct/2016:19:13:31 +0300] "GET /forum/profile.php?id=38804 HTTP/1.0" 403 633

Вот эти две строки зенкой воспринимаются как одна. Я всё башку сломал не мог понять в чём дело. Даже версию зенки откатил с 5.10.0.1 на 5.9.9.1 Думал глючит зараза))

а потом пришла мне в голову светлая мысль посмотреть невидимые символы в конце строк. А там просто LF вместо CR LF

Как быть?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 491
Благодарностей
8 696
Баллы
113
Всем привет.
ребята подскажите как разбить файл на строки если в конце каждой строки вместо CR LF просто LF
Пример:

120.192.101.58 - - [09/Oct/2016:19:13:30 +0300] "GET /forum/profile.php?id=62934 HTTP/1.0" 403 633
192.3.144.46 - - [09/Oct/2016:19:13:31 +0300] "GET /forum/profile.php?id=38804 HTTP/1.0" 403 633

Вот эти две строки зенкой воспринимаются как одна. Я всё башку сломал не мог понять в чём дело. Даже версию зенки откатил с 5.10.0.1 на 5.9.9.1 Думал глючит зараза))

а потом пришла мне в голову светлая мысль посмотреть невидимые символы в конце строк. А там просто LF вместо CR LF

Как быть?
зенкой или нотепадом++ замени /n на /r/n
или /n на стринг.энтер..
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
зенкой или нотепадом++ замени /n на /r/n
или /n на стринг.энтер..
В переменной всё нормально получилось, но записывает в файл всё равно просто LF. И потом при попытке взять строку из файла зенка берёт весь файл как одну строку.

А заменять в нотепаде не вариант
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
Если из переменной Ctrl+c в нотепад Ctrl+v то этот хвост CR LF на месте. А сама зенка записывает в файл только с таким хвостом LF
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 491
Благодарностей
8 696
Баллы
113
Если из переменной Ctrl+c в нотепад Ctrl+v то этот хвост CR LF на месте. А сама зенка записывает в файл только с таким хвостом LF
переводы строк зависят от того, в каком режиме создан был файл изначально - в win-формате или в unix-формате..
тут только поступать так - зенкой брать файл в переменную, производить замену и записывать в дургой файл, зенка создаст другой файл уже в win-формате..
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 104
Баллы
113
зенкой или нотепадом++ замени /n на /r/n
или /n на стринг.энтер..
Не придираюсь, но нужно \n на \r\n или на {-String.Enter-} (Тип поиска - Regex).

Объединить элементы списка в переменную > Замена > Очистить список (Удалить все элементы) > Добавить текст
 
Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 491
Благодарностей
8 696
Баллы
113

botovod

Client
Регистрация
04.04.2014
Сообщения
170
Благодарностей
126
Баллы
43
как вариант можно попробовать в настройках списка свой разделитель поставить Regexp - \n
 
  • Спасибо
Реакции: Dimionix

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
Ребята, ни один из ваших советов не помог.
После такой замены \n на \r\n или на {-String.Enter-} (Тип поиска - Regex) Зенка записывает в файл даже без LF

Вот это "в настройках списка свой разделитель поставить Regexp - \n" ставит в конце строки только LF

Во всех случаях файл создаёт сама зенка

И даже если без записи да диск

Зенка воспринимает текст как одну строку
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
И вот фигня какая. Зенка создаёт файл в кодоровке ANSI. Она же вроде в UTF-8 должна создавать
 

tka4enko.ilya

Client
Регистрация
20.10.2015
Сообщения
61
Благодарностей
9
Баллы
8
покажи где ты берешь этот текст, может просто можно другую реглярку для парсинга составить
 

jonvy

Client
Регистрация
28.11.2015
Сообщения
305
Благодарностей
17
Баллы
18
покажи где ты берешь этот текст, может просто можно другую реглярку для парсинга составить
Текст этот - лог файл обращений к моему сайту. Выдираю я его гет запросом из статистики на хостинге.
Проблему со строками получилось решить ... способ примерно как гланды через задницу ...

Беру текст в переменную - > из неё выдёргиваю строки регуляркой .*?(?=\n) в файл -> получившийся файл "сохранить в файл". И все хвосты CR LF на месте.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 491
Благодарностей
8 696
Баллы
113
странно, что не действовала замена \n на \r\n
можно было попробовать замену \r на \r\n
скорее всего прошло бы все нормально..
 
Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 491
Благодарностей
8 696
Баллы
113
И все хвосты CR LF на месте.
эти хвости на месте, т.к. зенка создает файл в виндовом формате, именно с такими хвостами CR LF..
изначально инфа бралась из юниксового файла, где переводом каретки принято считать LF или CR (запамятовал какой из них именно)..
Нотепад виндовый, кстати, тоже не понимает юниксовых переводов строк и лепит все в одну строку..
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)