2014-02-20 2 views
0

Я пытаюсь удалить несколько строк, соответствующих некоторому регулярному выражению.удалить строки, соответствующие более чем одному шаблону, используя sed

curl <url> | sed '/\(foo\|bar\|baz\)/d' 

я не хочу любой из этих линий, чтобы показать, что матч Foo, Bar или Баз

он останавливается на обув

, если это проще с AWK, я в порядке с этим ,

+0

ли вы имеете в виду "я не хочу любой из этих линий, чтобы показать, что матч Foo, Bar _AND_ Баз"? – potong

+0

Ваш sed прекрасно работает в моем env (CGYWIN) – BMW

ответ

1

Или с: задать расширенное

curl <url> | egrep -v "foo|bar|baz" 
0

попробовать

curl <url> | sed '/foo\|bar\|baz/d' 

также увидеть много много близких примеров здесь: http://www.theunixschool.com/2012/06/sed-25-examples-to-delete-line-or.html

+0

Это действительно работает, как и ожидалось. документы говорят, что он останавливается при первом совпадении регулярных выражений. Мне нужно сделать это жадным, но/g не работает. – chovy

+0

вы можете найти некоторые вещи здесь http://stackoverflow.com/questions/5410757/sed-delete-a-line-containing-a-specific-string helpfull. – epeleg

+0

модифицировано мой ответ ... – epeleg

0

Использование awk

curl <url> | awk '!/foo|bar|baz/' 
0

Это может работать для вас (GNU СЭД):

sed '/foo/{/bar/{/baz/d}}' file 

или:

sed '/foo/!b;/bar/!b;/baz/d' file 
Смежные вопросы