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".

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.


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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.