GNU/Linux >> Tutoriels Linux >  >> Linux

Comment fonctionnent les options '-s', '-t' et '-c' de la commande tr sous Unix ?

-s Commutateur :Presser (supprimer les caractères répétés)

echo i am a good boy | tr -s good bad

sortie :i am a bd bdy

Il y a deux choses qui se passent dans les coulisses qui font que cela se produise. Tout d'abord, si le deuxième argument de tr est plus court que le premier puis le dernier caractère dans le 2ème argument est répété pour lui donner la même longueur que le premier. Donc la commande équivalente est :

echo i am a good boy | tr -s good badd

L'autre chose qui se passe est que lorsque les caractères du premier argument sont répétés, ils écrasent toute occurrence précédente (je fais référence aux deux oo s en good ). Cela rend la commande désormais équivalente à :

echo i am a good boy | tr -s god bdd

(le second o à d remplacement écrase le précédent o à a remplacement, le rendant redondant)

Sans le -s changer la sortie serait

i am a bddd bdy

Avec le -s basculer tr 'comprime' tous les caractères répétés qui sont répertoriés dans le dernier argument laissant la sortie finale :

i am a bd bdy

-c Commutateur :Complément

Le -c switch est utilisé pour faire correspondre le complément du premier argument (c'est-à-dire tous les caractères non répertoriés dans arg 1). Par conséquent, arg 1 contiendra de nombreuses lettres (256-3). Maintenant, la même chose arrive à arg 2 comme dans le cas précédent :le dernier caractère de Arg 2 est répété pour correspondre à la longueur ou Arg 1. Donc, la déclaration d'origine :

echo i am a good boy | tr -c good bad

est équivalent à :

echo i am a good boy | tr abcefhijklmnp... baddddddddddd...

(notez le g manquant , o et d dans le premier ensemble, notez également que d remplacera tous les autres caractères du deuxième jeu -- y compris le caractère espace)

C'est pourquoi i am a good boy devient dddddddgoodddodd

Plus d'informations ici :http://www.linuxjournal.com/article/2563


Votre compréhension de -s est incorrect, il remplace les occurrences répétées des caractères du jeu 1 dans l'entrée par un seul caractère. il ne modifie pas l'ensemble, par exemple.

echo i am a good boy | tr -s god bad

donne

i am a bad bay

Le -c L'option remplace le jeu 1 par son complément (c'est-à-dire le jeu de tous les caractères non contenus dans le jeu 1). Vous pouvez l'utiliser pour supprimer tous les caractères sauf les caractères spécifiés par exemple.

echo i am a good boy | tr -cd gobdy

sorties

goodboy

Linux
  1. Comment créer un alias et utiliser la commande Alias ​​sous Linux

  2. Comment fonctionne la commande Exit sur un terminal Unix ?

  3. Comment compresser et extraire des fichiers à l'aide de la commande tar sous Linux ?

  4. Comment copier des fichiers sous Linux et Unix ? 10 exemples de commandes cp

  5. Comment fonctionne la commande 'ls' sous Linux/Unix ?

Comment utiliser et tirer le meilleur parti de la commande fuser sous Linux

Comment installer et utiliser la commande Exa sur Ubuntu 20.04

Qu'est-ce que la commande source sous Linux et comment ça marche ?

Comment installer et utiliser la commande d'écran Ubuntu 20.04

Comment installer et utiliser la commande Ack sous Linux

Linux perf :comment utiliser la commande et le profileur