У Unix "менше", чи можу я перейти до наступного рядка, який НЕ містить X?


21

lessЧи можливо в інструменті Unix перейти до наступного рядка, який не містить певного виразу?

Мені іноді доводиться переглядати файли, що містять тисячі подібних суміжних рядків, які, наприклад, усі кажуть «Обчислити щось », і мене цікавить наступний рядок після поточного блоку, який не містить слова «Обчислення».

Відповіді:


29

Так, це функція пошуку, що не відповідає, наприклад:

less file.conf

то ви вводите /і після цього !ваш останній рядок повинен виглядати так:

Non-match /

потім введіть шаблон, наприклад, Non-match /^#щоб шукати перший рядок без початку#

Замість !символу ви також можете використовувати Ctrl+N.


1
Це прекрасно. Не міг очікувати кращої відповіді.
деман

4

Як додаток до відповіді випадкового кодера:

Ви також можете повністю відфільтрувати рядки:

<logfile grep -v mypattern |less 

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


1

Ви не тільки можете переходити між рядками, які не містять X, ви можете приховати рядки, які містять X, використовуючи команду less' &sgex filter filter.

less file.conf

потім введіть &!^Computingпотім enterключ і все ті рядки будуть приховані від очей.

Ви все ще можете шукати в решти рядків за допомогою /.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.