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


21

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

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

Ответы:


29

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

less file.conf

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

Non-match /

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

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


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

4

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

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

<logfile grep -v mypattern |less 

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


1

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

less file.conf

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.