Редактор SED: Удаление с использованием логического И

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Zerropull
проходил мимо
Сообщения: 4
Зарегистрирован: 2009-10-08 20:01:54

Редактор SED: Удаление с использованием логического И

Непрочитанное сообщение Zerropull » 2012-01-23 11:34:01

Добрый день.

Есть файл, в котором надо удалить строки, содержащие в себе "1", но только при условии, что в этой же строке будет иметься символ "!".
Как это сделать? Гуглю по sed, но не могу найти логическое И.

Пример:
sed -e '/1/d' -i /var/log/test.log

Но так он удаляет любую строку, где есть "1", а надо чтобы делал выборку строк, где есть и "1", и восклицательный знак.

Заранее спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
bagas
лейтенант
Сообщения: 922
Зарегистрирован: 2010-08-18 19:49:01
Откуда: Воронеж
Контактная информация:

Re: Редактор SED: Удаление с использованием логического И

Непрочитанное сообщение bagas » 2012-01-23 13:44:37

попробуй так

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

sed -e '/1.*!/d'  /var/log/test.log
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.

Zerropull
проходил мимо
Сообщения: 4
Зарегистрирован: 2009-10-08 20:01:54

Re: Редактор SED: Удаление с использованием логического И

Непрочитанное сообщение Zerropull » 2012-01-23 14:17:32

Жаль, что работает только в последовательности 1, потом !, но огромное спасибо))))

Небольшое замечание, чтобы другим было проще. Правильно будет:
sed -e '/1.*!/d' -i /var/log/test.log

Еще раз спасибо!))

Аватара пользователя
bagas
лейтенант
Сообщения: 922
Зарегистрирован: 2010-08-18 19:49:01
Откуда: Воронеж
Контактная информация:

Re: Редактор SED: Удаление с использованием логического И

Непрочитанное сообщение bagas » 2012-01-23 15:03:19

Zerropull писал(а):Жаль, что работает только в последовательности 1, потом !, но огромное спасибо))))

Небольшое замечание, чтобы другим было проще. Правильно будет:
sed -e '/1.*!/d' -i /var/log/test.log

Еще раз спасибо!))
Какая последовательность нужна?
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.

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

Re: Редактор SED: Удаление с использованием логического И

Непрочитанное сообщение kpp » 2012-01-23 15:58:04

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

sed '/[^1]*1[^!]*!/d; /[^!]*![^1]*1/d' -i /var/log/test.log
Чередование 1 и ! в любой последовательности.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

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

Re: Редактор SED: Удаление с использованием логического И

Непрочитанное сообщение kpp » 2012-01-23 16:03:35

Также подойдет конструкция:

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

grep -vE "((1.*!)|(!.*1))"
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.