Страница 1 из 1

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

Добавлено: 2012-01-23 11:34:01
Zerropull
Добрый день.

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

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

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

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

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

Добавлено: 2012-01-23 13:44:37
bagas
попробуй так

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

sed -e '/1.*!/d'  /var/log/test.log

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

Добавлено: 2012-01-23 14:17:32
Zerropull
Жаль, что работает только в последовательности 1, потом !, но огромное спасибо))))

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

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

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

Добавлено: 2012-01-23 15:03:19
bagas
Zerropull писал(а):Жаль, что работает только в последовательности 1, потом !, но огромное спасибо))))

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

Еще раз спасибо!))
Какая последовательность нужна?

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

Добавлено: 2012-01-23 15:58:04
kpp

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

sed '/[^1]*1[^!]*!/d; /[^!]*![^1]*1/d' -i /var/log/test.log
Чередование 1 и ! в любой последовательности.

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

Добавлено: 2012-01-23 16:03:35
kpp
Также подойдет конструкция:

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

grep -vE "((1.*!)|(!.*1))"