Suite

Comment combiner deux fonctions de remplacement de chaîne dans une seule expression ?


Je voudrais changer certaines de mes étiquettes de rue comme "Rue Muster" dans "Musterstr." ou alors "Rue de rassemblement" dans "Muster Str."

J'ai déjà fait ça pour le premier cas :

replace("nom", 'strae', 'str.')

et pour le deuxième cas :

replace("nom", 'Straße', 'Str.')

Mais comment combiner les deux ?

J'ai essayé différents styles comme :

replace("name", 'straße', 'str.') OU replace("name", 'straße', 'str.') replace(replace("name", 'straße', 'str.')(" nom", 'straße', 'str.'))

La solution de Joseph est bien lisible, je la recommanderais, mais pour répondre à votre question initiale :

replace(replace("nom", 'strae', 'str.'), 'Straße', 'Str.')

Vous pouvez le faire sans avoir à utiliser le remplacer une fonction:

cas lorsque "nom" LIKE 'strabe' puis 'str.' quand "nom" LIKE 'Strabe' puis 'Str.' finir

Cela vous permet d'ajouter facilement plus de termes pour n'importe laquelle de vos colonnes.


Il existe une fonction pour rechercher une sous-chaîne dans une chaîne ( find ) et une fonction pour remplacer une plage particulière dans une chaîne par une autre chaîne ( replace ), vous pouvez donc les combiner pour obtenir l'effet souhaité :

En réponse à un commentaire, je pense que replaceAll ressemblerait probablement à ceci :

Avec C++11, vous pouvez utiliser std :: regex comme ceci :

La double barre oblique inverse est requise pour échapper un caractère d'échappement.

std::string a une méthode de remplacement, est-ce ce que vous recherchez ?

Je n'ai pas essayé moi-même, il suffit de lire la documentation sur find() et replace() .

Pour que la nouvelle chaîne soit renvoyée, utilisez ceci :

Si vous avez besoin de performances, voici une fonction optimisée qui modifie la chaîne d'entrée, elle ne crée pas de copie de la chaîne :

Oui, vous pouvez le faire, mais vous devez trouver la position de la première chaîne avec le membre find() de string, puis remplacer par son membre replace().

Si vous prévoyez d'utiliser la bibliothèque standard, vous devriez vraiment vous procurer une copie du livre La bibliothèque standard C++ qui couvre très bien tout cela.

Cela ressemble à une option

string.replace(string.find("%s"), string("%s").size(), "Quelque chose")

Vous pouvez envelopper cela dans une fonction, mais cette solution en une ligne semble acceptable. Le problème est que cela ne changera que la première occurrence, vous voudrez peut-être la boucler, mais cela vous permet également d'insérer plusieurs variables dans cette chaîne avec le même jeton ( %s )

Il appelle à plusieurs reprises std::string::find() pour localiser d'autres occurrences de la chaîne recherchée jusqu'à ce que std::string::find() ne trouve rien. Parce que std::string::find() renvoie le positionner du match, nous n'avons pas le problème d'invalider les itérateurs.


Fonctions de chaîne

Pour travailler avec des chaînes, vous pouvez utiliser ces fonctions de chaîne ainsi que certaines fonctions de collecte. Les fonctions de chaîne ne fonctionnent que sur les chaînes.

Fonction de chaîne Tâche
concaténer Combinez deux ou plusieurs chaînes et retournez la chaîne combinée.
se termine par Vérifiez si une chaîne se termine par la sous-chaîne spécifiée.
formatNuméro Renvoie un nombre sous forme de chaîne en fonction du format spécifié
guide Générez un identificateur global unique (GUID) sous forme de chaîne.
Indice de Renvoie la position de départ d'une sous-chaîne.
dernierIndexDe Renvoie la position de départ de la dernière occurrence d'une sous-chaîne.
longueur Renvoie le nombre d'éléments dans une chaîne ou un tableau.
remplacer Remplacez une sous-chaîne par la chaîne spécifiée et retournez la chaîne mise à jour.
diviser Renvoie un tableau contenant des sous-chaînes, séparées par des virgules, à partir d'une chaîne plus grande basée sur un caractère délimiteur spécifié dans la chaîne d'origine.
commence avec Vérifiez si une chaîne commence par une sous-chaîne spécifique.
sous-chaîne Renvoie les caractères d'une chaîne, à partir de la position spécifiée.
baisser Renvoie une chaîne au format minuscule.
versSupérieur Renvoie une chaîne au format majuscule.
garniture Supprime les espaces blancs de début et de fin d'une chaîne et renvoie la chaîne mise à jour.


Les meilleures pratiques

Utilisez le caractère esperluette & au lieu de la fonction CONCATENATE.

L'opérateur de calcul esperluette (&) vous permet de joindre des éléments de texte sans avoir à utiliser de fonction.

Par exemple, =A1 & B1 renvoie la même valeur que =CONCATENATE(A1,B1). Dans de nombreux cas, l'utilisation de l'opérateur esperluette est plus rapide et plus simple que l'utilisation de CONCATENATE pour créer des chaînes.

Utilisez la fonction TEXTE pour combiner et formater des chaînes.

La fonction TEXTE convertit une valeur numérique en texte et combine des nombres avec du texte ou des symboles.

Par exemple, si la cellule A1 contient le nombre 23,5, vous pouvez utiliser la formule suivante pour formater le nombre en dollars :


Vous vous demandez peut-être quand il est logique d'utiliser l'opérateur + pour concaténer, et quand vous devriez utiliser le concaté() méthode. Voici quelques différences entre les deux :

  • le concaté() La méthode ne peut combiner que des objets String — elle doit être appelée sur un objet String et son paramètre doit être un objet String. Cela le rend plus restrictif que le + opérateur puisque l'opérateur convertit silencieusement tout argument non-chaîne en une chaîne.
  • le concaté() La méthode lève une NullPointerException si l'objet a une référence nulle, tandis que la + L'opérateur traite une référence nulle comme une chaîne « nulle ».
  • le concaté()) est capable de combiner seulement deux chaînes - elle ne peut pas prendre plusieurs arguments. le + L'opérateur peut combiner n'importe quel nombre de chaînes.

Pour ces raisons, le + L'opérateur est plus souvent utilisé pour combiner des chaînes. Cependant, si vous développez une application à grande échelle, les performances peuvent différer entre les deux en raison de la manière dont Java gère la conversion de chaînes. Soyez donc conscient du contexte dans lequel vous combinez des chaînes.


Une nouvelle syntaxe C# agréable pour l'interpolation de chaînes

Pour les premières versions de C#, nous avons formaté les chaînes en utilisant le standard chaîne.Format API :

Cette API présentait des améliorations minimes par rapport à la syntaxe utilisée avec imprimer et les API associées qui ont d'abord été développées pour le langage C. Ces API remontent au milieu des années 1970 ou avant.

Nous aurions dû progresser au-delà de cette API pendant toutes ces années. Enfin, avec C# 6, les nouvelles fonctionnalités d'interpolation de chaînes rendront votre code beaucoup plus clair lorsque vous produisez des chaînes qui sont une combinaison de texte et de valeurs calculées. Travailler avec du texte formaté est tellement de plus en plus courant que cela pourrait être la fonctionnalité qui tue pour C# 6.

Dans cet article, je vous montre la syntaxe d'expédition pour l'interpolation de chaînes et je discute de nombreux scénarios dans lesquels vous l'utiliserez. Je discute également de certaines des modifications de syntaxe que cette fonctionnalité a subies depuis sa préversion publique initiale jusqu'à sa version finale. Certaines ressources sur le Web se réfèrent toujours aux syntaxes des versions préliminaires précédentes pour cette fonctionnalité, il est donc important de savoir ce qui est à jour.

Commençons par couvrir la syntaxe actuelle à travers un exemple simple. La ligne de code suivante produit la même valeur que dans l'exemple précédent :

Cet exemple fournit la syntaxe de base utilisée dans l'interpolation de chaîne en C# 6. Vous introduisez l'interpolation de chaîne en commençant la chaîne de format par le signe dollar ($) personnage. Les "trous" dans la chaîne de format sont notés par l'accolade ( ) personnages. La principale amélioration se situe à l'intérieur des accolades, où vous placez des expressions C# au lieu d'indices de position pour les paramètres ultérieurs. C'est une grande amélioration de la lisibilité et beaucoup plus facile à corriger. À la place d'utiliser et en cherchant ce paramètre, vous trouvez , qui vous indique instantanément ce qui sera placé dans la chaîne formatée. Notez que l'un des arguments que j'utilise est un entier (personnage). Tout comme avec chaîne.Format, nous pouvons utiliser n'importe quel objet. Lorsque cet objet n'est pas une chaîne, le framework appellera ToString() pour le convertir en chaîne. La même construction pourrait s'écrire ainsi :

N'oubliez pas que vous pouvez mettre n'importe quelle expression C# valide entre les accolades, vous n'êtes pas limité aux variables. Par exemple, vous pouvez écrire un point et sa distance par rapport à l'origine de la manière suivante :

Deux concepts sont nouveaux. Examinons attentivement cet exemple et vous verrez comment ces concepts fonctionnent.

Premièrement, l'expression finale est un appel à Math.Sqrt, où le paramètre est X^2 + Y^2 (en utilisant le théorème fondamental de Pythagore pour calculer l'hypoténuse d'un triangle rectangle):

Toute expression C# valide est autorisée à l'intérieur du caractères dans une chaîne interpolée. Cela inclut les appels de méthode, les requêtes LINQ, les calculs et les conditions, mais sans s'y limiter.

Les accolades supplémentaires dans l'instruction (en rouge dans la coloration syntaxique) fournissent un exemple de la façon d'écrire une accolade ouvrante ou fermante (<) ou alors (>) dans une chaîne interpolée. Écrire une double accolade gauche (<<) produit l'accolade ouvrante (<) dans la sortie. Écrire une double accolade droite (>>) produit l'accolade fermante (>) dans la sortie.

Par exemple, si un point a les valeurs (3, 4) pour x, y, cette instruction définira str à la valeur <3, 4>est 5 de l'origine.

Très probablement, cependant, les valeurs de x et y, et presque certainement la distance, sont des doubles qui n'ont pas un bon résultat. La représentation par défaut aura un nombre quelconque de décimales, et elle ne sera pas formatée correctement pour vous. La fonction d'interpolation de chaîne vous permet de spécifier des chaînes de format dans le cadre du remplacement. Vous pouvez spécifier une valeur à virgule flottante avec deux chiffres à droite de la virgule comme suit :

Vous pouvez placer n'importe quelle chaîne de format valide dans le "trou" de cette expression. Placez deux points (:) après l'expression et la chaîne de format après les deux points. Les chaînes de format valides dépendent du type de l'expression précédant les deux points. Ici, mes chaînes de format sont toutes F2, qui affiche deux chiffres après la virgule pour un nombre à virgule flottante.

Après ces changements, ma ligne de code devient assez longue. Utilisons le littéral de chaîne textuelle pour diviser la chaîne :

Oui, vous pouvez combiner le littéral de chaîne verbatim avec les constructions de chaîne interpolées.

Toutes les expressions C# valides sont correctes

Explorons maintenant quelques-uns des contours de cette fonctionnalité. J'ai dit que toute expression C# valide est légale à l'intérieur des accolades (<>) pour l'interpolation de chaîne.

De nombreuses API peuvent accepter un paramètre de chaîne. Par exemple, la ligne suivante formate la date actuelle dans un format personnalisé :

Notez qu'aucun caractère spécial n'est nécessaire pour échapper les guillemets où la date actuelle est affichée. Tout le texte que vous placez entre les accolades ouvrantes et fermantes dans une chaîne formatable sera analysé en tant que code source C#. Il ne sera pas interprété comme une chaîne littérale. Toute expression C# légale est valide. Chaque fois que je fais une démonstration de cette fonctionnalité lors d'une conférence ou d'un groupe d'utilisateurs, les personnes présentes essaient toujours de proposer une construction C# qui ne fonctionnera pas. Ils ne l'ont pas encore réussi. Une personne a même suggéré un chaîne.Format appel à l'intérieur d'une chaîne interpolée. Oui cela fonctionne. Mais c'est vraiment moche. Et oui, vous pouvez imbriquer des chaînes interpolées. S'il vous plaît, n'écrivez pas ce genre de construction dans votre propre code ! J'ai écrit la ligne suivante juste pour montrer que le compilateur C# traite les arguments de chaîne interpolés en tant que C# normal :

Eh bien, c'est très moche. Mais les chaînes interpolées imbriquées analysent correctement.

Notez que j'ai dû entourer l'expression conditionnelle de parenthèses (en gras ci-dessous) pour empêcher le compilateur d'interpréter les deux points comme le début d'une chaîne de format :

Il n'y a pas besoin d'écrire quelque chose d'aussi fou. Je le déconseille fortement. Mais la force de l'analyseur syntaxique apporte des avantages très importants. Un domaine que j'utilise souvent est celui des vues Razor. Si vous créez un site à l'aide d'ASP.NET 5 (la mise à niveau majeure à venir vers ASP.NET), vous pouvez utiliser la fonctionnalité d'interpolation de chaîne dans vos vues utilisateur. Par exemple, les modèles ASP.NET existants créent ce code dans le _LoginPartial.cshtml déposer:

Le modèle mis à jour crée ce code :

Remarquez plus ici que les changements pour les chaînes interpolées. Les nouveaux attributs fournissent une syntaxe plus concise pour le Html.ActionLink appel. J'aime beaucoup la façon dont la syntaxe Razor a adopté ses propres constructions naturelles pour utiliser l'interpolation de chaînes dans les vues. Vous ajoutez simplement le symbole "à" (@) à n'importe quelle expression C# dans votre code HTML. Au fur et à mesure que j'ai adopté cela, mes vues Razor ont diminué de près d'un tiers.

Internationalisation (et un peu d'histoire)

L'une des dernières mises à jour de cette fonctionnalité impliquait un léger changement qui rendait l'interpolation de chaînes beaucoup plus riche dans les scénarios où votre code doit formater des chaînes pour une culture ou un langage différent de la culture existante.

Tous les exemples présentés jusqu'à présent ont créé des chaînes. Le compilateur formatera la chaîne en utilisant la culture actuelle. Mais le signe dollar ($) ne doit pas être limité à la création d'une chaîne. Vous pouvez forcer le compilateur à créer un type différent, FormattableString. Ce type représente une chaîne de format composite, ainsi que les arguments à formater. Il vous permet d'accéder au pipeline et d'avoir un meilleur contrôle sur le résultat final.

Vous ne voudrez peut-être pas que l'interpolation de chaîne utilise la culture actuelle lors de la mise en forme des objets (nombres, dates, etc.). Vous pouvez spécifier une culture particulière pour l'opération de format en appelant une surcharge de chaîne.Format. L'exemple suivant formate une chaîne contenant un nombre pour l'Allemagne, où le point (.) le caractère utilisé aux États-Unis pour séparer le nombre entier de la partie fractionnaire doit être remplacé par la virgule (,) personnage:

Cette fonctionnalité a été ajoutée plus tard dans le cycle de développement, en réponse à de nombreuses demandes de développeurs qui ont besoin de créer une sortie pour une culture différente de celle de l'emplacement actuel. Cette fonctionnalité était particulièrement importante pour les développeurs créant des applications Web.

Ce n'était pas le seul changement lors du développement de cette fonctionnalité. Dans ses premières implémentations, cette fonctionnalité remplaçait simplement les espaces réservés de position par des arguments nommés dans tout appel à chaîne.Format. Pour éclairer la fonction, l'accolade ( ) les caractères ont été échappés :

Mais cet usage avait de nombreuses limites. Il n'était pas facile d'imprimer les accolades dans une chaîne formatée. De plus, étant disponible uniquement dans un appel à chaîne.Format limité de nombreux scénarios.

Plus tard, le $ La syntaxe a été introduite, ce qui rend le formatage beaucoup plus facile et ouvre d'autres scénarios, y compris la syntaxe spécifique à Razor dans ASP.NET 5 que j'ai mentionnée plus tôt. Les dernières modifications ont pris en charge le formatage de la culture spécifique.

Vous pouvez voir ces changements dans l'historique des notes de conception du langage, disponibles sur GitHub. Certaines des notes précédentes ont été publiées lorsque le code Roslyn était sur CodePlex. Ces notes peuvent migrer vers GitHub au fil du temps.

Directives initiales sur l'interpolation de chaînes en C#

J'aime beaucoup cette nouvelle fonctionnalité. Il a complètement remplacé n'importe quel idiome où j'ai utilisé et dans n'importe quel code que j'écris en utilisant la dernière version de C#. La simplicité améliore énormément la qualité du code. Cependant, je n'ai pas pris le temps de revenir sur un code existant pour le modifier. La nouvelle fonctionnalité d'interpolation de chaîne compile presque exactement les mêmes constructions que celles que nous utilisions dans les versions précédentes. Bien que je préfère le nouveau code, à moins que je ne modifie la fonction dans laquelle une ancienne construction a été utilisée, je ne la mets pas à jour. Les avantages ne sont pas suffisants pour le taux de désabonnement supplémentaire. Si je fais des mises à jour majeures à une routine, je mets à jour le code pour utiliser cette nouvelle fonctionnalité, je ne le fais pas pour des corrections de bogues ou de nouvelles fonctionnalités ailleurs dans une classe.


Chaînes de concaténation ^

Cependant, certaines tâches nécessitent l'utilisation d'opérateurs. Par exemple, PowerShell n'a pas de fonction concat. Au lieu de cela, vous pouvez simplement concaténer deux chaînes ou plus avec l'opérateur plus :

Alternativement, vous pouvez développer les deux chaînes entre guillemets :

Dans l'exemple, l'espace garantit que les deux mots ne collent pas ensemble. Cependant, vous pouvez insérer n'importe quel autre délimiteur.

Concaténer des chaînes dans PowerShell

Cette méthode convient également pour concaténer les éléments d'un tableau de chaînes :

PowerShell insère automatiquement un espace ici entre les éléments du tableau liés.

Une autre option pour concaténer des chaînes est la rejoindre opérateur. Son utilisation est peut-être un peu contre-intuitive. Normalement, vous placez l'opérateur devant la chaîne à moins que vous ne souhaitiez séparer les chaînes avec un délimiteur après la fusion :

Si vous n'aimez pas le résultat « Helloworld » dans l'exemple et que vous souhaitez ajouter un espace entre les deux mots, vous devez appeler -rejoindre Par ici:


9.7.1. AIMER

L'expression LIKE renvoie true si le chaîne correspond à celui fourni schéma. (Comme prévu, l'expression NOT LIKE renvoie false si LIKE renvoie true, et vice versa. Une expression équivalente est NE PAS (chaîne AIMER schéma).)

Si schéma ne contient pas de signes de pourcentage ou de traits de soulignement, le motif ne représente que la chaîne elle-même, dans ce cas LIKE agit comme l'opérateur égal. Un trait de soulignement (_) dans schéma signifie (correspond à) n'importe quel caractère un signe de pourcentage (%) correspond à n'importe quelle séquence de zéro ou plusieurs caractères.

La correspondance de motif LIKE couvre toujours la chaîne entière. Par conséquent, si l'on souhaite faire correspondre une séquence n'importe où dans une chaîne, le modèle doit commencer et se terminer par un signe de pourcentage.

Pour faire correspondre un trait de soulignement littéral ou un signe de pourcentage sans correspondre à d'autres caractères, le caractère respectif dans schéma doit être précédé du caractère d'échappement. Le caractère d'échappement par défaut est la barre oblique inverse mais un autre peut être sélectionné en utilisant le S'ÉCHAPPER clause. Pour faire correspondre le caractère d'échappement lui-même, écrivez deux caractères d'échappement.

Noter: Si vous avez désactivé standard_conforming_strings, toutes les barres obliques inverses que vous écrivez dans les constantes de chaîne littérales devront être doublées. Voir la section 4.1.2.1 pour plus d'informations.

Il est également possible de ne sélectionner aucun caractère d'échappement en écrivant S'ÉCHAPPER ''. Cela désactive efficacement le mécanisme d'échappement, ce qui rend impossible la désactivation de la signification particulière des signes de soulignement et de pourcentage dans le motif.

Le mot clé J'APPRÉCIE peut être utilisé à la place de AIMER pour rendre la correspondance insensible à la casse en fonction de la locale active. Ce n'est pas dans le standard SQL mais c'est une extension PostgreSQL.

* correspond à ILIKE . Il y a aussi !

* opérateurs qui représentent NOT LIKE et NOT ILIKE , respectivement. Tous ces opérateurs sont spécifiques à PostgreSQL.


Exemples d'utilisation de Grep pour plusieurs chaînes, modèles et mots

Pour vous assurer que vous comprenez comment utiliser grep pour rechercher plusieurs chaînes, nous vous suggérons de créer un fichier avec du texte sur lequel nous allons essayer plusieurs cas d'utilisation différents.

Dans notre cas, nous avons nommé le fichier exemple.txt et ajouté quelques paragraphes de texte. Nous avons stocké le fichier dans le répertoire du test utilisateur, c'est-à-dire dans /home/test/exemple.txt

Comment gérer plusieurs motifs dans un fichier

Dans les exemples ci-dessous, nous utiliserons grep au lieu de grep étendu. N'oublie pas de utilisez la barre oblique inverse avant le caractère pipe.

Étant donné que grep ne prend pas en charge le symbole pipe en tant qu'opérateur d'alternance, vous devez utiliser le caractère d'échappement (barre oblique inverse ) pour indiquer au grep commande de traiter le tuyau différemment.

Par exemple, pour rechercher les mots supplémentaireet valeurdans le exemple.txt fichier utilisez cette commande :

La sortie met en évidence la chaîne que vous vouliez grep.

Si le même fichier se trouve dans un autre répertoire, vous devez accéder à ce répertoire ou utiliser le chemin complet du fichier :

Pour rechercher plus de deux mots, continuez à les ajouter de la même manière.

Par exemple, pour rechercher trois mots, ajoutez la chaîne de caractères souhaitée suivie d'une barre oblique inverse et d'une barre verticale :

Voyons à quoi ressemble la commande grep ci-dessus lors de l'utilisation grep -E , egrep , et grep -e :

Nous utiliserons grep dans d'autres exemples, mais vous pouvez utiliser la syntaxe que vous préférez.

Rechercher plusieurs correspondances exactes dans un fichier

Si vous voulez trouver des correspondances exactes pour plusieurs modèles, passez le -w drapeau au grep commander.

Par exemple, la sortie ci-dessous montre la différence entre la recherche sans -w et avec :

Comme vous pouvez le voir, les résultats sont différents. La première commande affiche toutes les lignes avec les chaînes que vous avez utilisées.

La deuxième commande montre comment rechercher des correspondances exactes pour plusieurs chaînes. La sortie n'imprime que les lignes qui contiennent les mots exacts.

Noter: Grep propose de nombreuses fonctionnalités. Apprenez à utiliser grep pour des cas d'utilisation supplémentaires.

Ignorer la casse lors de l'utilisation de Grep pour plusieurs chaînes

Pour éviter de manquer quelque chose lorsque vous recherchez plusieurs modèles, utilisez le -je indicateur pour ignorer la casse.

Par exemple, nous ignorerons la casse avec cette commande :

La sortie montre comment les deux commandes diffèrent. Si vous incluez le -je flag et ignorer la casse, le résultat pour plusieurs correspondances inclut toutes les correspondances.

De cette façon, vous obtenez des résultats supplémentaires. Si vous ajoutez également le -w flag à cette commande, vous pouvez affiner encore plus les résultats :

Afficher le nombre de correspondances multiples dans un fichier

Disons que vous surveillez un fichier journal et que vous voulez voir si le nombre d'avertissements ou de messages augmente. Vous ne voulez pas voir les résultats détaillés lorsqu'un grand nombre de correspondances reviennent.

Par exemple, pour afficher le nombre de correspondances multiples dans le bootstrap.log fichier, saisissez :

La sortie imprime le nombre de correspondances. De cette façon, vous pouvez déterminer rapidement si le nombre d'avertissements et d'erreurs a augmenté.

Grep pour plusieurs modèles dans un type de fichier spécifique

Vous pouvez utiliser grep pour rechercher plusieurs chaînes dans un certain type de fichier uniquement. Si vous souhaitez surveiller les fichiers journaux dans un répertoire ou si vous souhaitez rechercher dans tous les fichiers texte, utilisez un astérisque et l'extension de fichier au lieu d'un nom de fichier.

Par exemple, pour rechercher des avertissements et des erreurs dans tous les .Journal fichiers dans le /var/log/ répertoire, entrez :

Pour mieux démontrer le fonctionnement de cette option, nous n'afficherons que le nombre de correspondances.

La sortie affiche tous les fichiers dans lesquels grep a recherché les chaînes que vous avez utilisées.

Noter: Si vous obtenez un "Permission refusée" message, comme nous l'avons fait dans l'exemple ci-dessus, vous avez besoin des privilèges sudo. Pour inclure tous les fichiers, utilisez sudo avec le grep commander. Entrez le mot de passe sudo et grep recherchera dans tous les fichiers.

Rechercher récursivement plusieurs modèles dans un fichier

le grep La commande recherche uniquement dans le répertoire courant lorsque vous utilisez le caractère générique astérisque.

Pour inclure tous les sous-répertoires lors de la recherche de plusieurs modèles, ajoutez le -R opérateur vers grep :

La sortie renverra les résultats de tous les fichiers le grep commande trouvée dans le /var/log/ répertoire et ses sous-répertoires.

Dans ce didacticiel, vous avez appris à utiliser grep pour rechercher plusieurs mots ou modèles de chaîne dans un fichier. Le guide vous a également montré comment utiliser grep étendu.

Les exemples de cet article vous aident à vous entraîner à affiner votre recherche grep.