Exercice Unix corrigé les commandes cut et past

Exercice 1 :

echo 'USER WHOIS SHELL'; cut -d : -f 1,5,7 /etc/passwd | tr : '\t'

Exercice 2 :

cut -c 24- compte > /tmp/clients
cut -c 6-20 compte > /tmp/nums
cut -c 21 compte > /tmp/lettres

La première commande crée le fichier /tmp/clients qui contient les désignations des clients, la deuxième commande crée les numéros de comptes et la troisième crée un fichier de lettres de comptes.

paste -d "||" /tmp/clients /tmp/nums /tmp/lettres

Cette commande réalise la mise bout-à-bout des lignes des 3 fichiers en séparant les contenus par des barres verticales. Ce qui donne :
Désignation | Numéro de compte | Lettre

paste -d "||" /tmp/clients /tmp/nums /tmp/lettres | join -t '|' -1 2 -2 3 -o 1.1,2.1,2.2 gestion -

Le résultat du paste est ‘join’ sur le même champ avec le fichier gestion. On ne fourni que les champs nécessaires (le premier champ du fichier gestion et les 2 premiers du résultat du pipe).

Exercice 3 :
Si on considère que fichier est le fichier résultat sans les lignes de tête :

cat fichier | tr -s '\t' | cut -f 2 | tr : + | bc | paste -d '\t' fichier -

tr -s '\ t' : remplace les tabulations succéssives par une seule (pour avoir la liste des nombres en 2 ème champ; sinon nous aurons une chaîne vide en deuxième champ s’il y avait plusieurs tabulations après le nom cut -f 2 : prend le second champ (Nbr1:Nbr2:Nbr3) tr : + : transforme Nbr1:Nbr2:Nbr3 en Nbr1+Nbr2+Nbr3 bc : évalue l’expression Nbr1+Nbr2+Nbr3 paste -d '\ t' fichier - : rajoute à fichier, en troisième colonne, le résultat de bc

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *