У меня есть этот файл
foo
foo bar
foo bar baz
bar baz
foo baz
baz bar
bar
baz
foo 42
foo bar 42 baz
baz 42
Я хочу
- Выберите строки, которые содержат
foo
и не содержатbar
- Удалить строки, содержащие
foo
и НЕ содержатьbar
Я где-то читал (не могу найти ссылку), которую я должен использовать: exec с |
для этого.
Я пробовал следующее, но он не работает
:exec "g/foo" # works
:exec "g/foo" | exec "g/bar" -- first returns lines with foo, then with bar
:exec "g/foo" | :g/bar -- same as above
И, конечно, если я не могу выбрать строку, я не могу выполнить normal dd
на ней.
Любые идеи?
Изменить
Примечание для награды:
Я ищу решение, которое использует правильные команды: g и: v, и не использует хаки regex, поскольку условия могут быть не одинаковыми (у меня может быть 2 включает, 3 исключает).
Также обратите внимание, что в последних двух примерах вещей, которые не работают, они работают только для удаления строк, но они возвращают неверную информацию, когда я запускаю их без удаления (т.е. просматривая выбранные строки), и они ведут себя как упомянутых выше.