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

Outil texte Linux ligne de commande en vedette

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 :

  • -A imprime “$” à la fin de chaque ligne et affiche les caractères non imprimables en utilisant la notation des caret.
  • -n numérote toutes les lignes.
  • -b numérote les lignes qui ne sont pas vides.
  • -s ré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

Outils texte Linux Cat

2. sort

Comme son nom l’indique, sort trie le contenu des fichiers par ordre alphabétique et numérique.

Outils texte Linux Sort

3. uniq

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

Outils texte Linux Uniq

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.

Outils texte Linux Comm

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 -5 ou -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.

Outils texte Linux Cut Char

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.

Outils texte Linux Cut Field

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.

Outils texte Linux 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

Outils texte Linux Fold

Si la coupure des mots est indésirable, vous pouvez utiliser l’option -s pour casser aux espaces.

fold -w30 -s longline.txt

Outils texte Linux Fold Spaces

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 filename

Pour modifier le fichier original à la place, vous pouvez utiliser le flag -i.

Outils texte Linux Sed

10. wc

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

Outils texte Linux Wc

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

Outils texte Linux Split Lines

Division par octets

split -b bytes input_file output_prefix

Outils texte Linux Split Bytes

Division en un nombre spécifique de fichiers

split -n num_files input_file output_prefix

12. tac

Tac, qui est cat à l’envers, fait exactement cela : il affiche les fichiers avec les lignes dans l’ordre inverse.

Outils texte Linux Tac

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 SET2

Par exemple, pour remplacer les caractères minuscules par leur équivalent en majuscules, vous pouvez utiliser ce qui suit :

tr "a-z" "A-Z"

Outils texte Linux Tr

Pour supprimer un ensemble de caractères, utilisez le flag -d.

tr -d SET

Pour supprimer le complément d’un ensemble de caractères (c’est-à-dire tout sauf l’ensemble), utilisez -dc.

tr -dc SET

Conclusion

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.