Czy w Unixie „mniej” mogę przejść do następnego wiersza, który NIE zawiera X?

21

Czy w lessnarzędziu uniksowym można przejść do następnego wiersza, który nie zawiera określonego wyrażenia?

Czasami muszę przeglądać pliki zawierające tysiące podobnych sąsiednich linii, które na przykład wszystkie mówią „Obliczanie czegoś ” i jestem zainteresowany następną linią po bieżącym bloku, która nie zawiera słowa „Obliczanie”.

dehmann
źródło

Odpowiedzi:

29

Tak, jest to funkcja wyszukiwania niezgodnego, na przykład:

less file.conf

następnie piszesz, /a następnie !twój ostatni wiersz powinien wyglądać następująco:

Non-match /

następnie wpisz na przykład swój wzór, Non-match /^#aby wyszukać pierwszą linię bez początku#

Zamiast !postaci możesz także użyć Ctrl+N.

Casual Coder
źródło
1
To jest doskonałe. Nie mogłem oczekiwać lepszej odpowiedzi.
dehmann
4

Jako dodatek do odpowiedzi Casual Coder:

Możesz także całkowicie odfiltrować linie:

<logfile grep -v mypattern |less 

Wadą jest to, że musisz wyjść i ponownie uruchomić grep, aby zmienić wzór; zaletą jest to, że linie, których nie chcesz widzieć, są ukryte, co ułatwia dostrzeżenie interesujących wzorów w liniach, które Cię interesują.

Śleske
źródło
1

Nie tylko można przeskoczyć między liniami, które nie zawierają X, można ukryć linie, które zawierają X, używając less„s &polecenie filtr regex.

less file.conf

następnie wpisz &!^Computingwtedy enterklucz i wszystkich tych linii będzie widoczne.

Nadal możesz wyszukiwać w pozostałych liniach za pomocą /.

Gdy znajdziesz linię, którą chcesz, możesz przywrócić pozostałe, jeśli potrzebujesz ich kontekstu - wpisz &następnie enterklucz, aby usunąć filtr.

Wil
źródło