Dans less
, pouvez-vous rechercher à l'aide /d'un modèle contenant un retour chariot et une nouvelle ligne? Je sais que votre modèle peut se terminer par une ligne utilisant $
(à partir de Comment puis-je inclure les sauts de ligne dans une recherche en moins? ), Mais j'ai besoin que le modèle corresponde au texte qui s'étend sur plusieurs lignes.
J'ai essayé \n
, mais cela ne recherche que le n
personnage.
\n+
1 ou plusieurs nouvelles lignes?less
(search.c:search_range()
). L'opération de recherche / correspondance est effectuée sur une seule ligne délimitée par un saut de ligne à la fois, vous ne pouvez donc pas faire de correspondance entre les limites de ligne. Voirline.c:forw_raw_line()
pour l'implémentation de "readline" comme appelé parsearch_range
.Réponses:
Il n'est pas possible de faire correspondre les limites des lignes, car la fonction de recherche dans
less
fonctionne sur une seule ligne délimitée par des sauts de ligne à la fois. C'est le cas quelle que soit l'implémentation de l'expression régulière du système (GNU, POSIX, PCRE, etc.).Veuillez noter que je n'ai pas trouvé de référentiel source officiel pour le développement de la ligne principale
less
, mais à des fins de révision de code ici, les liens qui suivent proviennent de l'arborescence de contributions FreeBSD.Voir search.c: search_range () pour l'implémentation de l'opération de recherche. La boucle qui y est appelée appelle line.c: forw_raw_line () pour récupérer le prochain bloc de contenu délimité par des sauts de ligne. Ce bloc est passé à match.c: match_pattern () où le modèle de recherche (expression régulière) est exécuté.
Pour faire correspondre plusieurs lignes, vous devrez utiliser un outil différent. Une option consiste à passer dans votre éditeur et à utiliser ses capacités de recherche comme suggéré par d'autres. Vous pouvez appeler l'éditeur en appuyant
v
surless
.la source
Je ne sais pas comment le faire dans
less
, mais vous pouvez accomplir la même chose dansvim
.http://vim.wikia.com/wiki/Search_across_multiple_lines
L'atome
\\_.
trouve n'importe quel caractère, y compris la fin de ligne. Le multi\\{-}
correspond le moins possible.la source
less
utilise laed
syntaxe regex et ne prend malheureusement pas en charge la correspondance multiligne.https://www.gnu.org/software/gnulib/manual/html_node/ed-regular-expression-syntax.html#ed-regular-expression-syntax
J'espérais trouver cela aussi, ou au moins trouver si ce bit de syntaxe était utilisé dans
less
:Je peux donc utiliser un
.+
modèle pour faire correspondre les nouvelles lignes. Mais non, ce n'est pas le cas.la source