Treize outils utiles pour travailler avec du texte en ligne de commande

Les distributions GNU/Linux comprennent une multitude de programmes pour gérer du texte, dont la plupart sont fournis par les utilitaires de base GNU. Il y a une courbe d’apprentissage, mais ces utilitaires peuvent s’avérer très utiles et efficaces lorsqu’ils sont utilisés correctement.
Voici treize outils puissants de manipulation de texte que tout utilisateur de ligne de commande devrait connaître.
1. cat
Cat a été conçu pour concaténer des fichiers, mais il est le plus souvent utilisé pour afficher un seul fichier. Sans aucun argument, cat lit l’entrée standard jusqu’à ce que Ctrl + D soit pressé (depuis le terminal ou depuis la sortie d’un autre programme si une pipe est utilisée). L’entrée standard peut également être spécifiée explicitement avec un -.
Cat a un certain nombre d’options utiles, notamment :
-Aimprime “$” à la fin de chaque ligne et affiche les caractères non imprimables en utilisant la notation des caret.-nnumérote toutes les lignes.-bnumérote les lignes qui ne sont pas vides.-sréduit une série de lignes vides à une seule ligne vide.
Dans l’exemple suivant, nous concaténons et numérotons le contenu de file1, l’entrée standard et file3.
cat -n file1 - file3
2. sort
Comme son nom l’indique, sort trie le contenu des fichiers par ordre alphabétique et numérique.

3. uniq
Uniq prend un fichier trié et supprime les lignes dupliquées. Il est souvent enchaîné avec sort dans une seule commande.

4. comm
Comm est utilisé pour comparer deux fichiers triés, ligne par ligne. Il produit trois colonnes : les deux premières colonnes contiennent des lignes uniques au premier et au deuxième fichier respectivement, et la troisième affiche celles trouvées dans les deux fichiers.

5. cut
Cut est utilisé pour récupérer des sections spécifiques de lignes, en fonction des caractères, des champs ou des octets. Il peut lire d’un fichier ou d’une entrée standard si aucun fichier n’est spécifié.
Découpage par position de caractère
L’option -c spécifie une position de caractère unique ou une ou plusieurs plages de caractères.
Par exemple :
-c 3: le 3ème caractère.-c 3-5: de la 3ème à la 5ème caractère.-c -5ou-c 1-5: de la 1ère à la 5ème caractère.-c 5-: du 5ème caractère à la fin de la ligne.-c 3,5-7: le 3ème et de la 5ème à la 7ème caractère.

Découpage par champ
Les champs sont séparés par un délimiteur consistant en un seul caractère, qui est spécifié avec l’option -d. L’option -f sélectionne une position de champ ou une ou plusieurs plages de champs utilisant le même format que ci-dessus.

6. dos2unix
GNU/Linux et Unix terminent généralement les lignes de texte par un retour à la ligne (LF), tandis que Windows utilise le retour chariot et le retour à la ligne (CRLF). Des problèmes de compatibilité peuvent survenir lors de la gestion de texte CRLF sur Linux, c’est là que dos2unix entre en jeu. Il convertit les terminaisons CRLF en LF.
Dans l’exemple suivant, la commande file est utilisée pour vérifier le format du texte avant et après l’utilisation de dos2unix.

7. fold
Pour rendre les longues lignes de texte plus faciles à lire et à gérer, vous pouvez utiliser fold, qui renvoie les lignes à une largeur spécifiée.
Fold respecte strictement la largeur spécifiée par défaut, cassant les mots si nécessaire.
fold -w30 longline.txt
Si la coupure des mots est indésirable, vous pouvez utiliser l’option -s pour casser aux espaces.
fold -w30 -s longline.txt
8. iconv
Cet outil convertit le texte d’un encodage à un autre, ce qui est très utile lorsqu’il s’agit d’encodages inhabituels.
iconv -f input_encoding -t output_encoding -o output_file input_file- “input_encoding” est l’encodage dont vous convertissez.
- “output_encoding” est l’encodage vers lequel vous convertissez.
- “output_file” est le nom de fichier dans lequel iconv va sauvegarder.
- “input_file” est le nom de fichier que iconv va lire.
Note : vous pouvez lister les encodages disponibles avec iconv -l
9. sed
sed est un éditeur de flux puissant et flexible, le plus couramment utilisé pour trouver et remplacer des chaînes avec la syntaxe suivante.
La commande suivante lira depuis le fichier spécifié (ou l’entrée standard), remplaçant les parties du texte qui correspondent au motif d’expression régulière par la chaîne de remplacement et renvoyant le résultat au terminal.
sed s/pattern/replacement/g filenamePour modifier le fichier original à la place, vous pouvez utiliser le flag -i.

10. wc
L’utilitaire wc imprime le nombre d’octets, de caractères, de mots ou de lignes dans un fichier.

11. split
Vous pouvez utiliser split pour diviser un fichier en fichiers plus petits, par nombre de lignes, par taille, ou en un nombre spécifique de fichiers.
Division par nombre de lignes
split -l num_lines input_file output_prefix
Division par octets
split -b bytes input_file output_prefix
Division en un nombre spécifique de fichiers
split -n num_files input_file output_prefix12. tac
Tac, qui est cat à l’envers, fait exactement cela : il affiche les fichiers avec les lignes dans l’ordre inverse.

13. tr
L’outil tr est utilisé pour traduire ou supprimer des ensembles de caractères.
Un ensemble de caractères est généralement soit une chaîne, soit des plages de caractères. Par exemple :
- “A-Z” : toutes les lettres majuscules
- “a-z0-9” : lettres minuscules et chiffres
- “\n[:punct:]” : caractères de nouvelle ligne et de ponctuation
Référez-vous à la page du manuel de tr pour plus de détails.
Pour traduire un ensemble en un autre, utilisez la syntaxe suivante :
tr SET1 SET2Par exemple, pour remplacer les caractères minuscules par leur équivalent en majuscules, vous pouvez utiliser ce qui suit :
tr "a-z" "A-Z"
Pour supprimer un ensemble de caractères, utilisez le flag -d.
tr -d SETPour supprimer le complément d’un ensemble de caractères (c’est-à-dire tout sauf l’ensemble), utilisez -dc.
tr -dc SETConclusion
Il y a beaucoup à apprendre en ce qui concerne la ligne de commande Linux. Espérons que les commandes ci-dessus peuvent vous aider à mieux gérer le texte en ligne de commande.