Commandes de traitement de texte
Voici une sélection de commandes Unix de traitement de données textuelles.
1. Commandes historiques
Les commandes
cat,
diff,
grep,
head,
more,
sort,
tail,
tr,
uniq,
wc
sont des commandes qui recherchent, extraient, reformatent, réordonnent, substituent du texte.
Elles sont apparues dès les premières versions d’Unix.
grep
Filtre les lignes d’un flux.
De nombreuses options permettent de filtrer ce qui ne s’identifie pas (-v),
de ne pas différencier majuscule/minuscule (-i),
de sortir les n° de ligne (-n), les noms de fichiers contenant des lignes identifiées (-l),
de comprendre les regex étendues (-E) et les Perl regex (-P),
de simplement compter les correspondances (-c),
de rechercher récursivement dans une arborescence de fichiers (-R), etc.
$ ps aux | grep $USER
$ curl -s https://math.univ-angers.fr | grep -i master
more — less
more est la commande historique,
less en est une amélioration.
Ces 2 commandes paginent un flux.
$ ps aux | less
tail — head
Extrait les dernières/premières lignes d’un flux.
$ grep ^.aba /usr/share/dict/words | head -4
$ grep ^.aba /usr/share/dict/words | tail -4
L’option -f de tail lui permet de rester en attente d’arrivée de nouvelles lignes
dans le ou les fichiers spécifiés.
sort
Trie les lignes d’un flux (par ordre alphabétique par défaut, numérique en option).
$ sort ~/.bash_history
L’option -k permet de spécifier la clé de tri.
uniq
Garde 1 seul exemplaire d’une suite de lignes consécutives identiques (et peut compter les exemplaires regroupés).
$ cat << EOD | uniq
un
deux
deux
EOD
$ cat << EOD | uniq -c
un
un
deux
un
EOD
tr
Transpose un ensemble de caractères d’un flux.
$ man tr | tr AB BA
$ man tr | tr '[A-Za-z]' '[a-zA-Z]'
2. Commandes XXL
Ce sont des des commandes historiques plus sophistiquées. Ces commandes sont de véritables couteaux suisses du traitement de texte, dont la prise en main demande du temps et de la pratique. Mais il n’est pas nécessaire de les maitriser entièrement pour en tirer profit. Se trouvent dans cette catégorie :
3. Autres commandes de traitement de texte
| nom | objet | example |
|---|---|---|
|
découpe un fichier en n fichiers de p lignes |
|
|
extrait une partie de chaque ligne |
|
|
fusionne chaque ligne de n fichiers en une seule |
|
|
fusionne chaque ligne de 2 fichiers ayant des champs communs |
|
|
reformate un texte |
|
|
convertit les tabulations en espace, et inversement |
|
|
formate un texte en colonnes |
|
|
supprime des colonnes de caractères d’un texte |
|
|
|
|
|
renverse les lignes |