The OpenNET Project / Index page

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

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

"удаление \n в тексте"  +/
Сообщение от Grego on 28-Окт-10, 13:27 
здравствуйте
мне нужно удалить '\n' встречающуюся в текстовом промежутке между симовлами '*' и '|'
пример есть фраза вида "\n * вася пошел гулять \n на улицу \n | 10.10.10 \n"
нужно привести к конструкции вида
"\n * вася пошел гулять на улицу \n | 10.10.10\n"
или хотя бы  
"\n * вася пошел гулять на улицу | 10.10.10 \n"
пробовал проделать сие с sed, но ограничения на обработку \n просто в тупик загоняют

заранее спасибо

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

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


1. "удаление \n в тексте"  +/
Сообщение от Andrey Mitrofanov on 28-Окт-10, 13:35 
> пробовал проделать сие с sed, но ограничения на обработку \n просто в
> тупик загоняют

А Ваше '\n' в исходном тексте -- это перевод строки или символы слэш и "n"?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "удаление \n в тексте"  +/
Сообщение от Grego on 28-Окт-10, 13:36 
>> пробовал проделать сие с sed, но ограничения на обработку \n просто в
>> тупик загоняют
> А Ваше '\n' в исходном тексте -- это перевод строки или символы
> слэш и "n"?

перевод строки

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "программиста вам, барин, надо...."  +/
Сообщение от Andrey Mitrofanov on 29-Окт-10, 09:51 
>>> пробовал проделать сие с sed, но ограничения на обработку \n просто в
>>> тупик загоняют
>> А Ваше '\n' в исходном тексте -- это перевод строки или символы
>> слэш и "n"?
> перевод строки

Ну на. Я даже и заморачиваться с sed-ом не стал -- там c переводам строки полный бардак...

$ echo -e {,}{1,2,3}{\*,,\|,}\\n |awk '{if(buf){buf=buf""$0;if(/\|/){print buf; buf=""}}else{if(/\*/){buf=$0}else print}}'
1* 1 1|
1
2* 2 2|
2
3* 3 3|
3
1* 1 1|
1
2* 2 2|
2
3* 3 3|
3

$ _

Хотя для "тонких" ценителей можно было бы организовывать tr перед sed-ом, tr после sed-а... Но оно того не стоит....

...

...


...

$ echo -e {,}{1,2,3}{\*,,\|,}\\n |tr '!\n|' '|!\n' |sed ':s s_\(\*[^!]*\)!_\1_; t s' |tr '|!\n' '!\n|'

Времени на это потратил существенно больше -- точно не стоит. :D

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "программиста вам, барин, надо...."  +/
Сообщение от Grego on 29-Окт-10, 11:44 
Андрей,спасибо-способ с awk отлично работает.
Правда я уже к этому времени решил задачу методом от обратного: удалил при помощи tr все переводы и затем расставил их заново в нужных местах. Что касается найма программиста ради обработки одного лог файла- :)))  Вот соберусь с силами и начну учить perl,пишут для таких вещей жутко полезный,но вот никак не могу себя заставить начать, книжку бы хорошую без занудства...
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "удаление \n в тексте"  +/
Сообщение от Pahanivo (ok) on 28-Окт-10, 20:17 
> пробовал проделать сие с sed, но ограничения на обработку \n просто в
> тупик загоняют

смотри в сторону перловых регексов - он умеет такое обрабатывать

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

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

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




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

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