A Linux terminal window on a desktop screen.
Agence web » Actualités du digital » couper, trier, uniq, tr et plus

couper, trier, uniq, tr et plus

Linux est un excellent système pour modifier du texte sur la ligne de commande car il existe de nombreux outils permettant de modifier le texte. Beaucoup existent depuis l’époque d’Unix. Voici quelques outils que tout utilisateur de Linux devrait connaître.

couper : sélectionner des champs

cut est un utilitaire rudimentaire qui peut prendre des colonnes de données tabulaires et en afficher une ou plusieurs. L'option -f sélectionne un champ, plusieurs champs ou plages. Le délimiteur par défaut est une tabulation, mais vous pouvez le modifier avec l'option -d. Par exemple, pour sélectionner les champs 1 et 3 en utilisant un espace comme délimiteur


cut -f 1,3 -d ' '

Bien que la coupe soit réparable, il existe de meilleurs outils disponibles mentionnés ci-dessous. awk est un outil puissant pour séparer les données tabulaires en texte brut. Il est également beaucoup plus intelligent en ce qui concerne les espaces blancs, en étant capable de sélectionner et de manipuler les champs plus facilement.

sort : trier le texte dans le terminal

La commande sort trie tout texte qu'elle reçoit. La méthode habituelle est que les lignes comportant des chiffres viennent en premier et sont triées par ordre, suivies des lignes commençant par des lettres, qui sont triées par ordre alphabétique. Vous pouvez modifier cela avec les options. Vous pouvez utiliser -d pour « ordre du dictionnaire ».

le tri est utilisé le plus efficacement dans des pipelines tels que celui-ci :


some_command | cut -f1 | sort -d

Une autre option utile est -i pour ignorer la casse et -n pour forcer un tri numérique. Il y a beaucoup plus d'options dans la page de manuel, comme pour la version GNU.

uniq : supprimer les doublons

uniq est utile pour supprimer les doublons du texte. En d’autres termes, il trie les éléments « uniques », d’où son nom. Lorsque vous exécutez du texte via uniq, soit un fichier texte comme argument comme « fichier uniq » ou à partir d'une entrée standard, il imprimera le flux de texte à l'écran à moins qu'il ne soit redirigé sous forme de fichier avec les entrées en double omises.

Par exemple, dans un fichier contenant :

  • chien
  • chat
  • pomme
  • pomme
  • élan

Vous récupérerez :

Le mot « pomme » n’apparaît désormais qu’une seule fois.

Comme pour les autres utilitaires, il brille lorsque vous l'utilisez dans des pipelines travaillant sur des E/S standard :


some_command | cut -f1 | sort -d | uniq

Vous pouvez voir à quel point cette technique consistant à enchaîner des commandes dans un pipeline peut être efficace grâce à Brian Kernighan, l'un des premiers développeurs Unix des Bell Labs et l'un des co-auteurs du célèbre livre « The C Programming Language ».

Vous pouvez le voir MacGyver un correcteur orthographique utilisant ces utilitaires directement dans le terminal dans cette vidéo de 1982 à partir de 17h15 :

tr : Remplacer les caractères

tr est un utilitaire qui vous permet de remplacer des caractères individuels dans un texte. Encore une fois, cela est particulièrement utile dans un flux de texte. Vous pouvez remplacer un caractère spécifique, tel qu'un par c, ou une plage de caractères.

Les arguments par défaut de tr sont les caractères que vous souhaitez remplacer et par quoi vous souhaitez les remplacer.

Par exemple, si vous souhaitez mettre en majuscule chaque lettre minuscule dans un flux de texte, vous utiliserez cette commande : Cela indique à tr de prendre n'importe quel caractère minuscule compris entre « a » et « z » et de le changer en sa contrepartie majuscule. Placez les modèles souhaités entre guillemets simples afin que le shell sache que vous souhaitez que tr les gère. Sinon, le shell donnera une erreur de syntaxe.

Si vous souhaitez convertir en minuscules, vous pouvez inverser l'ordre :

tr 'A-Z' 'a-z'  

sed : Rechercher et remplacer du texte

Si vous souhaitez un remplacement de texte plus puissant, sed est un utilitaire que vous devriez consulter. C'est trop compliqué d'entrer dans toutes ses fonctionnalités, mais je vais montrer l'une de ses utilisations les plus populaires, la recherche et le remplacement de texte par des expressions régulières.

Les expressions régulières constituent un moyen puissant de recherche de texte qui vous permet de spécifier des recherches jusqu'au caractère. Dans cet exemple, nous remplacerons Windows par Linux :

sed 's/Windows/Linux/' 

Cette commande indique à sed de rechercher le modèle de caractères « Linux » et de les remplacer par l'expression « Windows ». Les expressions régulières sont largement utilisées sous Linux, y compris dans la commande grep ainsi que dans de nombreux éditeurs, elles sont donc essentielles si vous envisagez sérieusement d'utiliser les utilitaires Linux.

Encore une fois, mettez les commandes entre guillemets simples pour qu'elles soient dirigées vers sed au lieu du shell.

awk : analyse de modèles puissante

awk est une commande puissante qui constitue en réalité un langage de programmation en soi. Il porte à l'origine le nom de ses créateurs, Alfred Aho, Peter Weinberger et notre ami Brian Kernighan.

Il est bien adapté pour détecter des modèles dans des flux de texte. Par exemple, si nous voulions imprimer les utilisateurs et les commandes qu'ils exécutent, nous utiliserions ce pipeline :


ps aux | awk '{print $1, 11}'

Cela indique à awk de prendre la sortie de la commande ps et d'imprimer les premier et onzième champs. Il y a bien plus de choses à awk que ce qui peut être couvert dans cette section, mais vous pouvez voir à quel point c'est utile.

Votre éditeur de texte préféré : choisissez votre arme

L’outil d’édition de texte le plus important est peut-être votre éditeur de texte. Il semble que tout le monde soit passionné par le choix de son éditeur. Les « guerres d'éditeurs » classiques se déroulent entre Emacs et Vi, ou plutôt Vim. Si vous êtes sérieux au sujet de Linux, c'est là que vous passerez une grande partie de votre temps. Si vous n’en avez pas choisi un, essayez-en plusieurs et voyez comment vous les aimez.

De nombreux éditeurs disposent de leur propre ensemble de fonctionnalités. Une grande partie de la décision dépend du goût. Je trouve simplement que le style de commande vi de Vim est le plus confortable pour mes doigts, mais votre expérience pourrait être différente.

★★★★★