Чем удалить кусок строки

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
kharkov_max
капитан
Сообщения: 1781
Зарегистрирован: 2008-10-03 14:56:40

Чем удалить кусок строки

Непрочитанное сообщение kharkov_max » 2011-12-03 20:32:10

День добрый.

Есть файлик в нем строки с текстом )))

Нужно из строки удалить все что находится между символами "(бла бла бла )" в том числе и сами символы ().
Как это сделать

Спасибо.

Аватара пользователя
kharkov_max
капитан
Сообщения: 1781
Зарегистрирован: 2008-10-03 14:56:40

Re: Чем удалить кусок строки

Непрочитанное сообщение kharkov_max » 2011-12-03 21:20:41

Нашел
cat ./file | sed 's|(.*)||' > ./new_file

Следующий вопрос.
В строках встречается такое

(бла бла) (бла бла)

В выше указаном варианте sed удаляет все, а нужно что б удалял только первое совпадение.
awk не подойдет т.к. не во всех строках есть такие повторения ...

Как через sed закрутить ?

Аватара пользователя
kharkov_max
капитан
Сообщения: 1781
Зарегистрирован: 2008-10-03 14:56:40

Re: Чем удалить кусок строки

Непрочитанное сообщение kharkov_max » 2011-12-03 21:41:50

Вообщем sed как то нужно указать что между () должны быть буквы или цифры а не символы ().

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Чем удалить кусок строки

Непрочитанное сообщение kpp » 2011-12-03 22:30:33

Удалить нужно только первое вхождение в каждой строке файла или первое вхождение по всем файле?
Либо я туго под вечер соображаю, либо условие какое-то неточное.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Аватара пользователя
kharkov_max
капитан
Сообщения: 1781
Зарегистрирован: 2008-10-03 14:56:40

Re: Чем удалить кусок строки

Непрочитанное сообщение kharkov_max » 2011-12-03 22:46:44

kpp писал(а):Удалить нужно только первое вхождение в каждой строке файла или первое вхождение по всем файле?
Либо я туго под вечер соображаю, либо условие какое-то неточное.


К примеру

Код: Выделить всё

#Kode qwertyu fhfhfgh etet 4 erwrwr
12345 (qwerty) sfsfwegdgdg
#Kode qwertyu fhfhfgh etet 4 erwrwr gdgertetertg
234567 (qwerty) etetete (poiuyrre)


После sed должно получится

Код: Выделить всё

#Kode qwertyu fhfhfgh etet 4 erwrwr
12345 sfsfwegdgdg
#Kode qwertyu fhfhfgh etet 4 erwrwr gdgertetertg
234567  etetete (poiuyrre)


а пока получается

Код: Выделить всё

#Kode qwertyu fhfhfgh etet 4 erwrwr
12345  sfsfwegdgdg
#Kode qwertyu fhfhfgh etet 4 erwrwr gdgertetertg
234567

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Чем удалить кусок строки

Непрочитанное сообщение kpp » 2011-12-04 21:22:49

Код: Выделить всё

sed 's/(.[^(]*)//' ./file > ./new_file

Так попробуй.
Замечу, что

Код: Выделить всё

cat ./file
совсем не обязательно.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Аватара пользователя
kharkov_max
капитан
Сообщения: 1781
Зарегистрирован: 2008-10-03 14:56:40

Re: Чем удалить кусок строки

Непрочитанное сообщение kharkov_max » 2011-12-04 21:35:41

Ну так почему то не отработало, но направление понятно - ответ найду.
cat - учел

Спасибо.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Чем удалить кусок строки

Непрочитанное сообщение kpp » 2011-12-04 21:54:32

С Вашим примером у меня на выходе:

Код: Выделить всё

#Kode qwertyu fhfhfgh etet 4 erwrwr
12345  sfsfwegdgdg
#Kode qwertyu fhfhfgh etet 4 erwrwr gdgertetertg
234567  etetete (poiuyrre)

Вроде как и заказывали.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Аватара пользователя
kharkov_max
капитан
Сообщения: 1781
Зарегистрирован: 2008-10-03 14:56:40

Re: Чем удалить кусок строки

Непрочитанное сообщение kharkov_max » 2011-12-04 22:10:04

kpp писал(а):С Вашим примером у меня на выходе:

Код: Выделить всё

#Kode qwertyu fhfhfgh etet 4 erwrwr
12345  sfsfwegdgdg
#Kode qwertyu fhfhfgh etet 4 erwrwr gdgertetertg
234567  etetete (poiuyrre)

Вроде как и заказывали.


Еще может быть так:

Код: Выделить всё

#Kode qwertyu fhfhfgh etet 4 erwrwr
12345 (qwerty)sfsfwegdgdg
#Kode qwertyu fhfhfgh etet 4 erwrwr gdgertetertg
234567 (qwerty)etetete (poiuyrre)


Т.е. без пробелов между первыми скобками
Ваш пример не удаляет первые скобки и содержимое между ними ((.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Чем удалить кусок строки

Непрочитанное сообщение kpp » 2011-12-04 22:16:10

В результате измененного примера на выходе у меня :

Код: Выделить всё

#Kode qwertyu fhfhfgh etet 4 erwrwr
12345 sfsfwegdgdg
#Kode qwertyu fhfhfgh etet 4 erwrwr gdgertetertg
234567 etetete (poiuyrre)

Ничего подозрительного не наблюдаю.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

Fantom[NB]
проходил мимо

Чем удалить кусок строки

Непрочитанное сообщение Fantom[NB] » 2015-02-20 15:03:24

Код: Выделить всё

sed 's/([^)]*) *//' ./text

и да, я знаю сколько лет прошло
Последний раз редактировалось Alex Keda 2015-02-23 14:33:21, всего редактировалось 1 раз.
Причина: Товарищщи, цените чужое время, юзайте кнопочку [code]...


Вернуться в «SHELL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя