Recherche de site Web

Linux est livré avec un dictionnaire gratuit et il est plus utile que vous ne le pensez


egrep est un raccourci pour "grep -E" qui utilise des expressions régulières étendues. Dans ce cas, cela permet une syntaxe plus propre.

Cet exemple est assez simple une fois que vous êtes familiarisé avec les expressions régulières :

  • Les caractères d'ancrage — circonflexe (^) et dollar ($) — représentent le début et la fin de la ligne. Ils garantissent des correspondances qui correspondent à des mots complets, et non seulement à une partie d'un mot.
  • Le point (.) est un caractère générique qui correspond à n'importe quel caractère. Enfin, le {22} répète l'élément précédent 22 fois. Ainsi, l’expression complète nous donne des mots d’exactement 22 caractères :

awk est un autre outil qui fait un usage intensif des modèles d'expressions régulières, mais il est beaucoup plus puissant que grep, un langage à part entière, en fait. Cela signifie qu’il dispose de divers raccourcis qui sont inestimables dans des cas comme celui-ci.

Voici l'équivalent awk de la commande grep précédente :

awk 'length($0) == 22' /usr/share/dict/words

Cela utilise les fonctionnalités $0 pour faire correspondre la ligne entière et la fonction de longueur intégrée de awk pour compter le nombre de caractères qu'elle contient.

Vous pouvez utiliser l'un ou l'autre de ces outils facilement disponibles pour le travail. Votre choix dépendra de facteurs tels que l’efficacité, la facilité d’utilisation et les préférences personnelles. Si vous êtes familier avec les expressions régulières, l'approche grep peut être plus simple, mais la commande awk est un peu plus lisible.

2 Découvrez le mot le plus long

En vous basant sur l’exemple précédent, que diriez-vous de découvrir quel est le mot le plus long ? Vous pouvez le faire très facilement avec le programme wc (word count) et son indicateur -L :

wc -L /usr/share/dict/words

La sortie vous indique que le mot le plus long compte 28 lettres, ce qui est assez impressionnant. Pour découvrir ce qu'est réellement ce mot, réutilisez simplement le processus de l'exemple de longueur de mot :

awk 'length($0) == 28' /usr/share/dict/words

Les fichiers de dictionnaire varient considérablement. Bien sûr, différentes langues auront des dictionnaires totalement différents, mais, entre systèmes, même la même langue peut avoir un ensemble de mots très différents. Par exemple, macOS me dit que « anti-désestablishmentarianisme » est le mot le plus long, tandis qu'un système Ubuntu distant auquel je me connecte me dit que c'est « électroencéphalographe ». Peut-être que macOS est juste un peu plus « intelligent en matière de livres ».

3 Trouvez l'inspiration pour nommer les choses

Le fichier dictionnaire contient un nombre surprenant de noms propres, mais nous pouvons l’utiliser à notre avantage. Peut-être avez-vous besoin d’un nom de personnage pour le roman sur lequel vous travaillez ou recherchez-vous des suggestions peu orthodoxes pour le nom d’un nouveau-né.

Pour une raison quelconque, si vous souhaitez une liste de noms possibles, le fichier de mots est là pour vous. Recherchez simplement chaque ligne commençant par une lettre majuscule :

grep '^[A-Z].' /usr/share/dict/words

4 Obtenez un mot aléatoire

Obtenir une ligne aléatoire à partir d'un fichier semble utile, mais il n'existe aucune commande intégrée évidente pour le faire. Cependant, cela démontre la puissance du pipeline Linux : vous pouvez enchaîner quelques commandes simples pour faire le travail.

Tout d’abord, vous devez connaître la commande sort et son indicateur -R. sort classe généralement un ensemble de lignes par ordre alphabétique ou numérique, mais l'indicateur -R rend l'ordre aléatoire à la place. Cela simplifie la tâche : randomisez les mots et choisissez le premier, ce qui est un travail de tête :

sort -R /usr/share/dict/words | head -n1

Assurez-vous d'utiliser -R, pas -r qui trie dans l'ordre inverse.

Ce n'est peut-être pas la solution la plus efficace, mais elle est assez rapide sur un fichier de dictionnaire classique et sur un ordinateur moderne, et elle est facile à retenir !

5 Trouver des mots sans aucune voyelle

Curieux de connaître la langue anglaise ? Vous avez peut-être entendu le vieil adage selon lequel chaque mot contient une voyelle. Réfutons cela avec quelques simples grep'ing :

egrep '^([^aeiou]){2,}$' /usr/share/dict/words

Cette expression utilise la syntaxe de la classe de caractères (crochets ([ et ])) pour restreindre les caractères à un ensemble donné. Il utilise la négation – le deuxième circonflexe (^) – pour faire correspondre tous les caractères qui ne font pas partie de l'ensemble. Ainsi, chaque caractère ne doit pas être « a », « e », etc. Le {2,} restreint les correspondances aux mots comportant au moins deux lettres ; les résultats sur une seule lettre ne sont pas très intéressants !

6 Trouver des mots avec toutes les voyelles dans l'ordre

Nous, les passionnés de mots, aimons nos anecdotes, et un défi commun consiste à trouver un mot qui contient toutes les voyelles dans l'ordre : a, e, i, o et u. Voici une commande grep rapide qui recherche les mots contenant les cinq voyelles, avec n'importe quel nombre de caractères entre les deux :

grep '.*a.*e.*i.*o.*u.*' /usr/share/dict/words

Vous remarquerez peut-être un léger défaut avec cette expression régulière : elle renvoie des mots comme « abietineous » qui répètent des voyelles. Si vous voulez être très strict, vous pouvez modifier l'expression régulière, même si cela devient un peu compliqué :

grep '[^aeiou]*a[^aeiou]*e[^aeiou]*i[^aeiou]*o[^aeiou]*u[^aeiou]*' /usr/share/dict/words

Cela exclut explicitement les voyelles entre celles que nous recherchons. Cela donne des résultats plus satisfaisants, notamment des mots comme « sobre » et « facétieux » :

7 Références principales pour une recherche plus intelligente

Revenons à grep, et cette fois nous verrons comment rechercher deux fois un motif compliqué comme la même lettre. Cela nécessite l'utilisation de références arrière qui vous aident à rechercher quelque chose qui a déjà été mis en correspondance. Vous pouvez trouver des mots avec une séquence de doubles lettres comme ceci :

egrep "(.)\1" /usr/share/dict/words

Ici, les parenthèses créent une expression groupée que vous pouvez ensuite faire correspondre à l'aide d'une référence arrière. La référence arrière — \1 — correspond au premier (et unique) groupe de l'expression régulière. Cette expression régulière signifie donc « tout caractère suivi du même caractère : »

Il existe de nombreux mots en anglais comportant deux lettres identiques consécutives. Mais qu'en est-il de trois ?

egrep "(.)\1\1" /usr/share/dict/words

Sur macOS, mon dictionnaire contient sept exemples intéressants :

8 Découvrez quelles lettres sont les plus utilisées

OK, c'est un peu une triche puisque nous découvrirons en fait quelle lettre apparaît au début de la plupart des mots, mais cela reste une information intéressante. C'est également une autre démonstration utile d'un pipeline, utilisant cette fois quatre utilitaires distincts :

cut -b1 /usr/share/dict/words | tr '[:upper:]' '[:lower:]' | uniq -c | sort -n

"cut -b1" renvoie la première lettre de chaque ligne du fichier. "tr '[:upper:]' '[:lower:]'" convertit tout en minuscules. "uniq -c" nous donne des lignes uniques, combinant des lignes identiques adjacentes et les comptant au fur et à mesure. Enfin, "sort -n" trie les résultats numériquement afin que la première lettre la plus courante apparaisse en bas.

Vos résultats varieront en fonction de votre langue. En anglais, il semble que « s » commence la plupart des mots, battant de peu « p ».

Si votre dictionnaire classe d'abord tous les mots en majuscules, suivis de tous les mots en minuscules, ajoutez un "| sort" juste avant le "| uniq".


Ce ne sont là que quelques-unes des choses amusantes et intéressantes que vous pouvez faire dans votre terminal Linux. Vous voudrez peut-être également découvrir comment utiliser Spotify dans votre terminal ou comment créer des œuvres artistiques en ligne de commande.

Articles connexes: