Строки извлечения, содержащие PAT1, но не PAT2 с sed

У меня есть подход, чтобы сделать это в простых следующих шагах:

1. press `v` to go to visual selection mode
2. select the lines you want to affect
3. :'<,'>normal 0dw

Объяснение третьего шага:

0 перешел для запуска строки.

dw удаляет слово (вакуумы).

normal применяет команду 0dw.

'<,'> повторяет нормальное для всех выбранных строк в визуальном режиме.

3
21.11.2012, 01:26
2 ответа

Что-то как:

sed '/dog/!d;/cat/d'

См. также

grep dog | grep -v cat
7
27.01.2020, 21:09
  • 1
    Grep является первой вещью, о которой я думал, там другая причина, в которой Вы нуждались sed? –  Yuugian 20.11.2012, 16:42

Можно сделать это как это:

sed -n '
    /dog/{
        /cat/!{
            p
        }
    }
' file.txt

или с :

awk '/dog/ && !/cat/' file.txt

позже каждый имеет преимущество, чтобы быть очень ясным и простым помнить.

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

perl -ne 'print if /dog/ && !/cat/' file.txt
4
27.01.2020, 21:09

Теги

Похожие вопросы