The OpenNET Project / Index page

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

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

"скрипт с awk или sed"  
Сообщение от Noob (ok) on 06-Ноя-07, 12:35 
Всем привет!.. Подскажите пожалуйста как используя awk или sed удалить из файла часть строки начиная с символа "!" и заканчивая символами "*/"
Пример исходного текста:
adfhzcxgn dafg
dafdf !dshdfhgdfg dfg*/ dfgdfg
dfgdfgdfgdfg
Должно получится:
adfhzcxgn dafg
dafdf  dfgdfg
dfgdfgdfgdfg

Заранее спасибо за любую помощь!..

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

 Оглавление

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


1. "скрипт с awk или sed"  
Сообщение от phpcoder email(??) on 06-Ноя-07, 12:43 
[...]

[c0der@rock ~]$ cat TEST
adfhzcxgn dafg
dafdf !dshdfhgdfg dfg*/ dfgdfg
dfgdfgdfgdfg
[c0der@rock ~]$ sed 's|\(.*\)![^*]*\*/\(.*\)|\1\2|' TEST
adfhzcxgn dafg
dafdf  dfgdfg
dfgdfgdfgdfg

Подойдёт?

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

2. "скрипт с awk или sed"  
Сообщение от Noob (ok) on 06-Ноя-07, 13:00 
>[оверквотинг удален]
>[c0der@rock ~]$ cat TEST
>adfhzcxgn dafg
>dafdf !dshdfhgdfg dfg*/ dfgdfg
>dfgdfgdfgdfg
>[c0der@rock ~]$ sed 's|\(.*\)![^*]*\*/\(.*\)|\1\2|' TEST
>adfhzcxgn dafg
>dafdf  dfgdfg
>dfgdfgdfgdfg
>
>Подойдёт?

Как оказывается все просто :-)
Спасибо огромное!!!

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

3. "скрипт с awk или sed"  
Сообщение от Noob (ok) on 06-Ноя-07, 14:15 
>[оверквотинг удален]
>[c0der@rock ~]$ cat TEST
>adfhzcxgn dafg
>dafdf !dshdfhgdfg dfg*/ dfgdfg
>dfgdfgdfgdfg
>[c0der@rock ~]$ sed 's|\(.*\)![^*]*\*/\(.*\)|\1\2|' TEST
>adfhzcxgn dafg
>dafdf  dfgdfg
>dfgdfgdfgdfg
>
>Подойдёт?

Простите за назойливость, но что делать если эти симвовы встречаются в разных строчках

пример:

asdfsdf dfsg
poijo !klblbib dsfh
dfghdxbxcbn*/ dsfgdg
sdfgdfgdfgdg

А в итоге должно быть:

asdfsdf dfsg
poijo  dsfgdg
sdfgdfgdfgdg

или

asdfsdf dfsg
poijo
dsfgdg
sdfgdfgdfgdg

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

4. "скрипт с awk или sed"  
Сообщение от phpcoder email(??) on 06-Ноя-07, 14:18 
>Простите за назойливость, но что делать если эти симвовы встречаются в разных
>строчках

Нужно думать ;) В sed  можно текущую строчку сохранить в буфере и считать след. строку. Ну а потом уже натравливать регулярное выражение на всю строку... так.. только вот не знаю как их потом разъединять обратно.. Короче, надо думать)

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

6. "скрипт с awk или sed"  
Сообщение от Noob (ok) on 06-Ноя-07, 14:33 
>>Простите за назойливость, но что делать если эти симвовы встречаются в разных
>>строчках
>
>Нужно думать ;) В sed  можно текущую строчку сохранить в буфере
>и считать след. строку. Ну а потом уже натравливать регулярное выражение
>на всю строку... так.. только вот не знаю как их потом
>разъединять обратно.. Короче, надо думать)

Т.е. можно сохранить несколько строчек в буфере и потом к ним всем сразу применить команды? А не получится ли то же самое что и при поочередном чтении. Т.е. будет ли он их все в буфере в одну строчку соединять, а потом от туда удалять все лишнее?..

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

7. "скрипт с awk или sed"  
Сообщение от phpcoder email(??) on 06-Ноя-07, 14:41 
[...]
>Т.е. можно сохранить несколько строчек в буфере и потом к ним всем
>сразу применить команды? А не получится ли то же самое что
>и при поочередном чтении. Т.е. будет ли он их все в
>буфере в одну строчку соединять, а потом от туда удалять все
>лишнее?..

Будет. Команда, кажется P. Почитайте про неё. Я как-то делал подобное.

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

5. "скрипт с awk или sed"  
Сообщение от phpcoder email(??) on 06-Ноя-07, 14:26 
[...]

[c0der@rock ~]$ sed 's|\(.*\)![^*]*$|\1|;s|^[^*]*\*/||' TEST
asdfsdf dfsg
poijo
dsfgdg
sdfgdfgdfgdg

Решение работает, но заточего конкретно под ваши данные и будет работать не всегда правильно.

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

8. "скрипт с awk или sed"  
Сообщение от Noob (ok) on 06-Ноя-07, 14:41 
>[...]
>
>[c0der@rock ~]$ sed 's|\(.*\)![^*]*$|\1|;s|^[^*]*\*/||' TEST
>asdfsdf dfsg
>poijo
> dsfgdg
>sdfgdfgdfgdg
>
>Решение работает, но заточего конкретно под ваши данные и будет работать не
>всегда правильно.

Да, это понятно, спасибо, но ведь ситуации разные бывают... неизвестно сколько строчек между ! и */

Т.е. например в выражении

asdfsdf dfsg
poijo !klblbib dsfh
sdafghdfgdg
dfghdxbxcbn*/ dsfgdg
sdfgdfgdfgdg

А в итоге должно быть:


asdfsdf dfsg
poijo
dsfgdg
sdfgdfgdfgdg

а в вашем варианте получится:

asdfsdf dfsg
poijo
sdafghdfgdg
dsfgdg
sdfgdfgdfgdg


Вобщем я в тупике, ищу помощь в доках, но пока не помогает... :-(

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

9. "скрипт с awk или sed"  
Сообщение от phpcoder email(??) on 06-Ноя-07, 14:53 
>Вобщем я в тупике, ищу помощь в доках, но пока не помогает... :-(

Вот твой ответ:

sed ':s;s|\(.*\)![^*]*\*/\(.*\)|\1\2|;/![^*]*$/{N;bs}'

Работает для всех вариантов: и когда в одной строке, и когда на двух, и когда между ними ещё строчки:

[c0der@rock ~]$ sed ':s;s|\(.*\)![^*]*\*/\(.*\)|\1\2|;/![^*]*$/{N;bs}' TEST | diff -u TEST -
--- TEST        2007-11-06 16:45:24 +0600
+++ -   2007-11-06 16:51:48 +0600
@@ -1,16 +1,12 @@
dfhzcxgn dafg
-dafdf !dshdfhgdfg dfg*/ dfgdfg
+dafdf  dfgdfg
dfgdfgdfgdfg

asdfsdf dfsg
-poijo !klblbib dsfh
-sdafghdfgdg
-dfghdxbxcbn*/ dsfgdg
+poijo  dsfgdg
sdfgdfgdfgdg

asdfsdf dfsg
-poijo !klblbib dsfh
-sdafghdfgdg
-dfghdxbxcbn*/ dsfgdg
+poijo  dsfgdg
sdfgdfgdfgdg

[c1der@rock ~]$

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

10. "скрипт с awk или sed"  
Сообщение от Noob (ok) on 06-Ноя-07, 15:00 
>[оверквотинг удален]
> sdfgdfgdfgdg
>
> asdfsdf dfsg
>-poijo !klblbib dsfh
>-sdafghdfgdg
>-dfghdxbxcbn*/ dsfgdg
>+poijo  dsfgdg
> sdfgdfgdfgdg
>
>[c1der@rock ~]$

Огромнейшее спасибо!!! Работает просто великолепно!!! :-)
Есть еще на свете добрые люди!.. :)))

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

11. "скрипт с awk или sed"  
Сообщение от phpcoder email(??) on 06-Ноя-07, 15:02 
>>[оверквотинг удален]
>Есть еще на свете добрые люди!.. :)))

Добрые люди, у которых есть при этом свободное время. :)

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

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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