La commande rev de Linux inverse les chaînes de texte. Cette commande peut fonctionner soit sur le texte fourni soit sur un fichier, et elle semble d’une simplicité trompeuse. Mais comme de nombreux utilitaires de ligne de commande, sa puissance réelle devient évidente lorsque vous le combinez avec d’autres commandes.
La commande rev est l’un de ces simples utilitaires Linux qui, à première vue, semble être quelque chose d’étrange. Il remplit une seule fonction: il inverse les chaînes. Et en plus de pouvoir imprimer une page d’aide rapide (-h) et de vous montrer son numéro de version (-V), il n’accepte aucun options de ligne de commande.
Alors, rev inverse les cordes, et c’est tout? Pas de variations ou d’options? Eh bien, oui et non. Oui, il n’y a pas de permutations, mais non, ce n’est guère tout. Ce tutoriel vous montre comment le combiner pour des opérations puissantes.
Lorsque vous utilisez rev comme élément de base dans des séquences de commandes plus compliquées, cela commence vraiment à montrer sa valeur. rev fait partie d’un groupe de commandes (comme tac et yes) qui sont des facilitateurs. Il est plus facile d’apprécier leur utilité lorsque vous voyez comment ils rendent l’utilisation d’autres commandes plus efficace.
Table des matières
Utilisation de la commande rev
Utilisé sur la ligne de commande sans autres paramètres, rev prend n’importe quelle entrée tapée, l’inverse, puis l’imprime dans la fenêtre du terminal. Il continue à le faire jusqu’à ce que vous appuyiez sur Ctrl + C pour quitter.
rev
Si vous tapez du texte et appuyez sur Entrée, rev imprime la chaîne à l’envers – à moins que vous ne lui fournissiez un palindrome, bien sûr.
Passer du texte à rev
Vous pouvez utiliser l’écho pour diriger le texte vers la rév.
echo one two three | rev
Vous pouvez également utiliser rev pour inverser le contenu d’un fichier de texte entier, ligne par ligne. Dans cet exemple, nous avons un fichier contenant une liste de noms de fichiers. Le fichier s’appelle «filelist.txt».
rev filelist.txt
Chaque ligne est lue à partir du fichier, inversée, puis imprimée dans la fenêtre du terminal.
Combinaison de rev avec d’autres commandes
Voici un exemple utilisant la tuyauterie d’entrée qui appelle rev deux fois.
Cette commande supprime le dernier caractère de la chaîne de texte. Cela peut être utile pour supprimer la ponctuation. Nous devons utiliser la commande cut pour dépouiller le personnage.
echo 'Remove punctuation.' | rev | cut -c 2- | rev
Décomposons cela.
echo envoie la chaîne dans le premier appel à rev.
rev inverse la corde et la transforme en coupe.
L’option -c (caractères) indique à cut de renvoyer une séquence de caractères à partir de la chaîne.
L’option 2 indique à cut de renvoyer la plage de caractères du caractère deux jusqu’à la fin de la ligne. Si un deuxième nombre était fourni, tel que 2-5, la plage serait de caractères deux à cinq. Aucun deuxième chiffre ne signifie «jusqu’à la fin de la chaîne».
La chaîne inversée – moins son premier caractère – est transmise à rev qui inverse la chaîne, de sorte qu’elle revient à son ordre d’origine.
Comme nous avons supprimé le premier caractère de la chaîne inversée, nous avons supprimé le dernier caractère de la chaîne d’origine. Oui, vous pouvez le faire avec sed ou awk, mais c’est une syntaxe plus simple.
Séparer le dernier mot
Nous pouvons utiliser une astuce similaire pour renvoyer le dernier mot de la ligne.
La commande est similaire à la dernière: encore une fois, elle utilise rev deux fois. Les différences résident dans la manière dont la commande Couper est utilisée pour sélectionner des parties du texte.
echo 'Separate the last word' | rev | cut -d' ' -f1 | rev
Voici la répartition des commandes:
echo envoie la chaîne dans le premier appel à rev.
rev inverse la corde et la transforme en coupe.
L’option -d » (délimiteur) indique à cut de renvoyer une séquence de caractères délimités par un espace.
L’option -f1 indique à cut de retourner la première section de la chaîne ne contenant pas le délimiteur. En d’autres termes, la première partie de la phrase jusqu’au premier espace.
Le premier mot inversé est passé à rev qui inverse la chaîne, donc elle revient à son ordre d’origine.
Parce que nous avons extrait le premier mot de la chaîne inversée, nous avons coupé le dernier mot de la chaîne d’origine. Le dernier mot de la phrase était «mot», et il est imprimé pour nous.
Découpage du contenu des fichiers
Disons que nous avons un fichier contenant une liste de noms de fichiers, et les noms de fichiers sont entre guillemets. Nous voulons supprimer les guillemets des noms de fichiers.
Regardons le fichier:
less filelist.txt
Le contenu du fichier est affiché pour nous en moins.
Nous pouvons supprimer la ponctuation des deux extrémités de chaque ligne avec la commande suivante. Cette commande utilise à la fois rev et cut deux fois.
rev filelist.txt | cut -c 2- | rev | cut -c 2-
Les noms de fichiers sont répertoriés pour nous sans les guillemets.
La commande se décompose comme ceci:
rev inverse les lignes du fichier et les conduit en coupe.
L’option -c (caractères) indique à cut de renvoyer une séquence de caractères à partir de chaque ligne.
L’option 2 indique à cut de renvoyer la plage de caractères du caractère deux jusqu’à la fin de chaque ligne.
Les chaînes inversées, moins leurs premiers caractères, sont transmises à rev.
rev inverse les chaînes pour qu’elles reviennent à leur ordre d’origine. Ils sont coupés une deuxième fois.
L’option -c (caractères) indique à cut de renvoyer une séquence de caractères à partir de chaque chaîne.
L’option 2 indique à cut de renvoyer la plage de caractères du caractère deux jusqu’à la fin de chaque ligne. Cela «saute» sur le guillemet de début, qui est le caractère un sur chaque ligne.
Beaucoup de tuyauterie
Voici une commande qui renvoie une liste triée de chaque extension de fichier dans le répertoire actuel. Il utilise cinq commandes Linux distinctes.
ls | rev | cut -d'.' -f1 | rev | sort | uniq
Le processus est simple:
ls répertorie les fichiers du répertoire courant. Ceux-ci sont insérés dans rev.
rev inverse les noms de fichiers et les transforme en coupe.
cut renvoie la première partie de chaque nom de fichier jusqu’à un délimiteur. Le -d ‘.’ dit à cut d’utiliser le point « . » comme délimiteur. La partie des noms de fichiers inversés jusqu’à la première période correspond aux extensions de fichier. Ceux-ci sont insérés dans rev.
rev inverse les extensions de fichier dans leur ordre d’origine. Ils sont mis en ordre.
sort trie les extensions de fichier et redirige les résultats vers uniq.
uniq renvoie une seule liste pour chaque type d’extension de fichier unique. Notez que s’il n’y a pas d’extension de fichier (comme pour le makefile et les répertoires Help et gc_help), le nom de fichier entier est répertorié.
Pour y mettre la touche finale, ajoutez l’option de ligne de commande -c (count) à la commande uniq.
ls | rev | cut -d'.' -f1 | rev | sort | uniq -c
Nous obtenons maintenant une liste triée des différents types de fichiers dans le répertoire actuel avec un décompte de chacun.
C’est un one-liner assez astucieux!
drawroF og ot drawkcaB gnioG
Parfois, il faut reculer pour avancer. Et vous avancez généralement le plus rapidement en équipe.
Ajoutez rev à votre répertoire de commandes go-to, et vous l’utiliserez bientôt pour simplifier des séquences de commandes autrement compliquées.