Sous Unix «moins», puis-je passer à la ligne suivante qui ne contient PAS X?

21

Dans l' lessoutil Unix , est-il possible de passer à la ligne suivante qui ne contient pas une certaine expression?

Je dois parfois parcourir des fichiers qui contiennent des milliers de lignes adjacentes similaires qui, par exemple, disent toutes " quelque chose de informatique " et je suis intéressé par la ligne suivante après le bloc actuel, qui ne contient pas le mot "informatique".

dehmann
la source

Réponses:

29

Oui, il s'agit d'une fonctionnalité de recherche sans correspondance, par exemple:

less file.conf

puis vous tapez /et après cela, !votre dernière ligne devrait ressembler à ceci :

Non-match /

puis tapez votre modèle par exemple Non-match /^#pour rechercher la première ligne sans commencer#

Au lieu de !caractère, vous pouvez également utiliser Ctrl+N.

Codeur occasionnel
la source
1
C'est parfait. Je ne pouvais pas m'attendre à une meilleure réponse.
dehmann
4

En complément de la réponse de Casual Coder:

Vous pouvez également filtrer complètement les lignes:

<logfile grep -v mypattern |less 

L'inconvénient est que vous devez quitter et redémarrer grep pour changer le modèle; l'avantage est que les lignes que vous ne souhaitez pas voir sont masquées, ce qui facilite la détection de motifs intéressants dans les lignes qui vous intéressent.

sleske
la source
1

Non seulement vous pouvez sauter entre les lignes qui ne contiennent pas X, mais vous pouvez masquer les lignes qui contiennent X, en utilisant lessla &commande de filtre regex de.

less file.conf

puis tapez &!^Computingla enterclé et toutes ces lignes seront masquées.

Vous pouvez toujours rechercher dans les lignes restantes avec /.

Une fois que vous avez trouvé la ligne que vous souhaitez, vous pouvez ramener les autres si vous avez besoin de leur contexte - tapez &ensuite la enterclé pour supprimer le filtre.

Wil
la source