faq tr (transcodage de caractères)

Creation: 2 mai 2017
Mise à jour:
Version: 1.0
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2017 Jean-Louis BICQUELET-SALAÜN
  1. Quels sont les options de tr ?

    -c , --complement complément
    -d, --delete détruit les caractères
    -s, --squeeze-repeats remplace chaque séquence de caractère répété par un seul caractère
    -t, --truncate-set1 tronque le premier lot de caractère sur le second
  2. Quels sont les codes des caractères spéciaux ?

    \NNN caractère fourni en octal
    \a alerte
    \b Backspace
    \f Form feed
    \n Newline
    \r Carriage return
    \t Tab
    \v Vertical tab.
  3. Quelles sont les classes de caractères?

    Les classes de caractères correspondent à un lot de caractères. On trouve:

    [:alnum:] lettres et chiffres
    [:alpha:] lettres
    [:blank:] espace blanc horizontaux
    [:cntrl:] caractères de contrôle
    [:digit:] chiffres
    [:graph:] caractères affichables à l'exception du blanc
    [:lower:] minuscules
    [:print:] caractères imprimable
    [:punct:] caractères de ponctuation
    [:space:] espace blanc horizontaux et verticaux
    [:upper:] majuscules
    [:xdigit:] hexadecimaux
  4. Comment afficher les valeurs du PATH à raison d'un chemin par ligne ?

    echo $PATH |tr ':' '\n'
    /sbin
    /usr/sbin
    /usr/local/sbin
    /root/bin
    /usr/local/bin
    /usr/bin
    /bin
    /usr/bin/X11
    /usr/X11R6/bin
    /usr/games
    /usr/lib/mit/bin
    /usr/lib/mit/sbin
    

  5. Comment convertir en minuscule un fichier ?

    tr "[A-Z]" "[a-z]" fichier
    

  6. Comment convertir en minuscule un fichier ou une chaine ?

    tr "[a-z]" "[A-Z]" < fichier
    echo "Le 22 à Asnière." | tr "[:lower:]" "[:upper:]"
    LE 22 à ASNIèRE.
    echo "voila une liste " | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
    VOILA UNE LISTE
    

  7. Comment convertir les fichiers Dos au format UNIX (sans retour chariot) ?

    tr -d '\015' < fichier_dos > fichier_linux
    

  8. Comment effacer tous les caractères X d'un fichier ?

    tr -d "X" < fichier
    

  9. Comment réduire toute une suite de X à un seul X dans le fichier ?

    tr -s "X" < fichier
    

  10. Comment transformer une chaine en effacant les caractères non spécifié? On ne garde que les lettres (option -dc):

    echo "Le 21 il a fait beau!" | tr -dc a-zA-Z
    Leilafaitbeau
    

    Les lettres et les chiffres:

    echo "Le 21 il a fait beau!" | tr -dc a-zA-Z0-9
    Le21ilafaitbeau
    

    Les lettres, les chiffres et les blancs:

    Le 21 il a fait beau
    

  11. Comment retirer tous les caractères non imprimable?

    tr -cd "[:print:]" < fichier
    

  12. Comment transformer des accolades en crochets?

    tr '{}' '()' < inputfile > outputfile
    

  13. Comment transformer les espaces en tabulation ?

     echo "C'est un test" | tr ' ' '\t' | od -a
    0000000    C   '   e   s   t  ht   u   n  ht   t   e   s   t  lf
    

  14. Comment transformer les espaces en tabulation en supprimant les répétitions ? Il faut ajouter l'optioon -s.

    echo "C'est    un     test" | tr ' ' '\t'
    C'est                           un                                      test
    adm-unx-nimpri(uprdjbc):/home/uprdjbc# echo "C'est    un     test" | tr -s ' ' '\t'
    C'est   un      test
    

  15. Comment supprimer les chiffres ?

    echo "Les 2345 combattants furent tués." | tr -d [:digit:]
    Les  combattants furent tués.
    

  16. Comment ne conserver que les chiffres ?

    echo "Les 2345 combattants furent tués." | tr -cd [:digit:]
    2345
    

  17. Comment joindre toutes les lignes d'un fichier en une seule ligne ?

    tr -s '\n' ' ' < file.txt
    

  18. Comment compter les lignes identiques ? Avec le fichier suivant:

    vous
    etes
    formidable
    vous
    savez
    tout
    faire
    

    On obtient ceci:

    cat file | tr -cs "[:alnum:]" "\n" | sort | uniq -c | sort -rn
       2 vous
       1 tout
       1 savez
       1 formidable
       1 faire
       1 etes
    

  19. Comment ne laisser qu'un seul espace ?

    echo "C est    un  test  " | tr -s [:space:] ' '
    C est un test