8
votes

Pourquoi Grep correspond-il à toutes les lignes du modèle "\ '"

dans Cette question de questions est quelque chose que je ne peux pas expliquer:

grep "\'" input_file


0 commentaires

4 Réponses :


-2
votes

\ est un caractère d'échappement. Cela signifie que le 'devrait considérer comme un texte à rechercher, et non comme un caractère de contrôle.


2 commentaires

Mais même si le fichier texte ne contient pas de guilleme, Grep correspond toujours à toutes les lignes du fichier. Je pense que c'est ce que demande l'OP.


Oui, il est étrange que Grep correspond à toutes les entrées pour une citation unique littérale



3
votes

C'est un très étrange Beavour de grep , je ne sais pas comment l'expliquer, mais je dois noter que \ ' ne correspond à aucun caractère. Il semble qu'il a la même signification que $ : xxx

update 1

tel qu'il est indiqué dans http://www.gnu.org /software/findutils/manual/html_node/finind_html/grep-regular-expression-syntax.html (Merci à Richard Sitze pour le lien) Il a vraiment la même signification que $ . Mais pendant ce temps, j'ai noté une différence entre \ ' et $ : xxx

vous pouvez spécifier \ \ ' autant de fois que vous le souhaitez, mais ce n'est pas le cas pour $ . Il doit y avoir un seul $ .

Une autre remarque importante. Le manuel dit: xxx

mais à proprement parler, ce n'est pas la vérité, car \ ' correspond non seulement à la fin de l'entrée entière mais la fin de chaque single Ligne également: xxx

exactement comment $ fait.


5 commentaires

Pour moi $ et \ ' se comporte un peu différemment. Echo x | grep "$ x" correspondance, mais écho x | grep "\ 'x" ne correspond pas.


Vous devez écrire grep '$ x' pas grep "$ x" ; Parce que "$ x" sera développé par shell et "$ x" est identique au '' (rien). Essayez simplement echo "$ x" et echo '$ x'


Plus $ n'a aucune signification au début d'une ligne d'une perspective d'ancrage. Double échec de ma part.


@theon: Non, cela a le sens, le même sens que toujours, mais le repère ne correspondra jamais


Vous avez dit "" \ 'correspond non seulement à la fin de l'entrée entière mais la fin de chaque ligne ". Est-ce que cela correspond à la fin de chaque ligne individuelle ou correspondait-il à la totalité de l'entrée?



6
votes

Grep Regex gnu extension : '\ \ '' correspond à la fin de l'entrée entière


0 commentaires

3
votes

Je ne connaissais pas cette caractéristique des expressions régulières. Mais il est énuméré à la liste régulière-expressions.info comme le fin de la chaîne ancre.

Il n'existe pas dans toutes les implémentations de regex uniquement dans GNU Basic et Extended Expressions régulières, voir cette Compatibilité Graphique pour plus d'informations.


0 commentaires