В Unix «поменьше» я могу перейти к следующей строке, которая НЕ содержит X?

21

lessМожно ли в инструменте Unix перейти к следующей строке, которая не содержит определенного выражения?

Иногда мне приходится просматривать файлы, содержащие тысячи похожих смежных строк, которые, например, все говорят «Вычисление чего-либо », и меня интересует следующая строка после текущего блока, в которой нет слова «Вычисление».

dehmann
источник

Ответы:

29

Да, это не совпадающая функция поиска, например:

less file.conf

затем вы набираете /и после этого !ваша последняя строка должна выглядеть так:

Non-match /

затем наберите свой шаблон, например, Non-match /^#чтобы искать первую строку без начала#

Вместо !персонажа вы также можете использовать Ctrl+N.

Случайный кодер
источник
1
Это потрясающе. Не мог ожидать лучшего ответа.
Dehmann
4

Как дополнение к ответу Casual Coder:

Вы также можете отфильтровать строки в целом:

<logfile grep -v mypattern |less 

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

sleske
источник
1

Вы можете не только прыгать между строками, не содержащими X, вы можете скрыть строки , которые содержат X, используя less«s &команды регулярок фильтра.

less file.conf

затем введите &!^Computingзатем enterключ и все те строки будут скрыты от глаз.

Вы все еще можете искать в оставшихся строках с помощью /.

После того, как вы нашли линию , которую вы хотите , вы можете принести другие назад , если вам нужно их контекст - тип &затем enterключ , чтобы удалить фильтр.

Wil
источник