GNU coreutils
À quoi il sert
Le paquet coreutils réunit une centaine de commandes élémentaires, présentes sur toute distribution GNU/Linux : manipulation de fichiers (ls, cp, mv, rm, chmod, install), informations système (date, id, df) et surtout les filtres de texte. wc compte, head et tail découpent le début et la fin, cut extrait des colonnes, tr traduit ou supprime des caractères, sort trie (par champ avec -k, numériquement avec -n, -h ou -V, de façon stable avec -s), uniq fusionne les lignes consécutives identiques et les compte (-c), comm et join comparent et associent deux fichiers triés, paste les juxtapose, tac inverse l'ordre des lignes, tee duplique un flux, stdbuf règle la mise en tampon d'un programme. Ubuntu 24.04 fournit coreutils 9.4, Debian 13 la version 9.7.
Quand le choisir
Pour composer des réponses rapides dans un tube : cut -d' ' -f3 | sort | uniq -c | sort -rn répond en une ligne à « quelles valeurs, combien de fois ». Ces outils sont rapides (sort sait faire un tri externe sur des fichiers plus gros que la mémoire) et disponibles partout. Quand la question demande des conditions sur plusieurs champs, des sommes ou des regroupements, un seul programme awk remplace avantageusement une longue chaîne ; pour du CSV avec guillemets ou du JSON, prenez un outil qui connaît le format.
Points d'attention
- Le résultat de
sort,comm,joinetuniqdépend de la locale et de son ordre de collation : fixezLC_ALL=C.UTF-8dans les scripts, et triez dans la même locale que l'outil qui relit. uniqne fusionne que des lignes consécutives : triez d'abord.sort -k2va du deuxième champ jusqu'à la fin de la ligne ; écrivez-k2,2.cut -d' 'traite chaque espace comme un séparateur : sur des colonnes alignées par plusieurs espaces, utilisez awk.cut -ccompte des octets, pas des caractères, dans ces versions.sort fichier > fichiervide le fichier avant de le lire ;sort -o fichier fichierest sûr.- Les fichiers temporaires de
sort(dansTMPDIR) contiennent une copie des données triées. - Dans un tube sous
pipefail,headqui se termine tôt peut faire mourir l'écrivain par SIGPIPE (code 141).
Par où commencer
La leçon Penser en flux : lignes, champs et petits outils du cours Traiter du texte, et la leçon Lire et éditer des fichiers de Linux : premiers pas. Puis le manuel de GNU coreutils, en particulier les chapitres sur sort et sur les opérations sur des fichiers triés.