La commande Linux look parcourt un fichier et répertorie toutes les lignes commençant par un mot ou une phrase en particulier. Mais attention! Il se comporte différemment sur différentes distributions Linux. Ce tutoriel vous montrera comment l’utiliser.
Table des matières
La commande look d’Ubuntu se comporte différemment
Pour une commande simple mais utile, look m’a certainement donné la solution lorsque je recherchais cet article. Il y avait deux problèmes: la compatibilité et la documentation.
Cet article a été vérifié à l’aide d’Ubuntu, de Fedora et de Manjaro. look était fourni avec chacune de ces distributions, ce qui était génial. Le problème était que le comportement n’était pas le même dans les trois. La version Ubuntu était très différente. Selon le Pages de manuel Ubuntu, le comportement doit être le même.
J’ai finalement compris. look utilise traditionnellement un recherche binaire, tandis que le look Ubuntu utilise un recherche linéaire. Les pages de manuel en ligne Ubuntu pour Bionic Beaver (18.04), Cosmic Cuttlefish (18.10) et Disco Dingo (19.04) indiquent toutes que la version Ubuntu utilise une recherche binaire, ce qui n’est pas le cas.
Si nous jetons un coup d’œil à la page de manuel Ubuntu locale, nous voyons qu’elle indique clairement que leur apparence utilise une recherche linéaire. Il existe une option de ligne de commande pour le forcer à utiliser une recherche binaire. Aucune des versions des autres distributions n’a la possibilité de choisir entre les méthodes de recherche.
man look
En faisant défiler la page de manuel, nous voyons la section qui décrit cette version de look en utilisant une recherche linéaire au lieu d’une recherche binaire.
La morale de l’histoire est de vérifier d’abord les pages de manuel locales.
Recherche linéaire et recherche binaire
La méthode de recherche binaire est plus rapide et plus efficace qu’une recherche linéaire. Travailler avec de gros fichiers rend cela très apparent. L’inconvénient de la recherche binaire est que votre fichier doit être trié. Si vous ne souhaitez pas trier votre fichier, triez-en une copie, puis utilisez-la avec look.
Nous allons le démontrer ailleurs dans cet article. Sachez simplement que sur Fedora, Manjaro, et j’attends la plupart du reste du monde Linux, vous devrez créer une copie triée de votre fichier et travailler avec cela.
Installer des mots
look peut fonctionner avec n’importe quel fichier texte de votre choix ou avec le fichier de dictionnaire local « words ».
Sur Manjaro, vous devez installer le fichier «mots». Utilisez cette commande:
sudo pacman -Syu words
Utilisation du look
Pour cet article, nous allons travailler avec un fichier texte du Edward Lear poème «The Jumblies».
Regardons son contenu avec cette commande:
less the-jumblies.txt
Voici la première partie du poème. Notez que nous utilisons Ubuntu, donc le fichier reste non trié. Pour Fedora et Manjaro, nous travaillerions avec une copie triée du fichier, que nous aborderons plus loin dans cet article.
Si nous recherchons des lignes qui commencent par le mot «Ils», nous découvrirons une partie de ce que les Jumblies ont fait.
look They the-jumblies.txt
look répond en listant ces lignes:
Ignorer la casse des caractères
Pour que l’apparence ignore les différences entre les majuscules et les minuscules, utilisez l’option -f (ignorer la casse). Nous avons de nouveau utilisé «ils» comme mot de recherche, mais cette fois, il est en minuscules.
look -f they the-jumblies.txt
Cette fois, les résultats incluent une ligne supplémentaire.
La ligne commençant par « ILS » a été manquée dans le dernier ensemble de résultats, car elle est en majuscules et ne correspond pas à notre terme de recherche « Ils ».
Ignorer la casse permet à Look de l’inclure dans les résultats.
Utilisation de l’apparence avec un fichier trié
Si votre distribution Linux a une version de look qui suit le comportement traditionnel d’utiliser une recherche binaire, vous devez soit trier votre fichier, soit travailler avec une copie triée de celui-ci.
Répétons la commande pour rechercher «Ils», mais cette fois sur Manjaro.
Comme vous pouvez le voir, aucun résultat n’a été renvoyé. Mais nous savons qu’il y a des vers dans le poème qui commencent par le mot «Ils».
Faisons une copie triée du fichier. Si vous envisagez d’utiliser les options -f (ignorer la casse) ou -d (caractères alphanumériques et espaces uniquement) avec look, vous devez les utiliser lorsque vous triez le fichier.
L’option -o (sortie) vous permet de spécifier le nom du fichier auquel les lignes triées doivent être ajoutées. Dans cet exemple, il s’agit de «sorted.txt».
sort -f -d the-jumblies.txt -o sorted.txt
Examinons le fichier sorted.txt, puis utilisons les options -f et -d.
Maintenant, nous obtenons les résultats attendus.
Ne considérez que les espaces et les caractères alphanumériques
Pour faire ignorer tout ce qui n’est pas Caractère alphanumérique ou un espace, utilisez l’option -d (alphanumérique).
Voyons s’il y a des mots qui commencent par «Oh».
look -f oh the-jumblies.txt
Aucun résultat n’est renvoyé par look.
Essayons à nouveau et disons à look d’ignorer autre chose que les caractères alphanumériques et les espaces. Cela signifie que les caractères et les symboles, tels que la ponctuation, seront ignorés.
look -f -d oh the-jumblies.txt
Cette fois, nous obtenons un résultat. Nous n’avons pas trouvé cette ligne auparavant car les guillemets et le point d’exclamation ont confondu la recherche.
Spécification du caractère de fin
Vous pouvez dire à look d’utiliser un caractère spécifique comme caractère de fin. Habituellement, les espaces et la fin des lignes sont utilisés comme caractère de fin.
L’option -t (caractère de fin) nous permet de spécifier le caractère que nous aimerions utiliser. Dans cet exemple, nous allons utiliser le caractère apostrophe. Nous devons le citer avec une barre oblique inverse pour que le regard sache que nous n’ouvrons pas de chaîne.
Nous citons également le terme de recherche car il comprend un espace. Nous recherchons deux mots.
look -f -t ' "they call" the-jumblies.txt
Les résultats correspondent au terme de recherche, terminé par l’apostrophe que nous avons utilisée comme caractère de fin.
Utiliser look sans fichier
Si vous ne fournissez pas de nom de fichier sur la ligne de commande, regardez utilise le fichier de mots.
La commande:
donne ces résultats:
Ce sont tous les mots du fichier qui commencent par le mot «cercle».
cherchez pas plus loin
C’est tout ce qu’il y a à regarder.
C’est assez facile une fois que vous savez qu’il existe différents comportements dans différentes distributions Linux, et que vous avez déterminé si votre version utilise une recherche binaire ou linéaire.