Manipulation de chaine : CUT AWK TR

AWK



Présentation



Définition



AWK est utilisé pour la manipulation de fichiers textuels pour des opérations de recherches, de remplacement et de transformations complexes.

awk s'utilise de cette façon:

Code BASH :
awk -options {instructions}  fichier 


Les options



-F<sep> : Sert à définir le séparateur de champ.

Exemples



Extraire les nom d'utilisateur et leur UID



Il peut être utile d'extraire la liste des utilisateurs sur la machine linux. Pour cela, on peut utiliser la commande :

Code BASH :
awk -F : '{print  $1}' /etc/passwd


Avec ceci, nous aurons tous les utilisateurs.

On peut afficher dans la même commande plusieurs champs (ici le nom et le UID) :

Code BASH :
awk -F : '{print  $1 $3}' /etc/passwd


Il est possible, de rajouter du texte dans le "print" en entourant le texte de guillemets.

Code BASH :
awk -F : '{print "User : " $1 " - GID : " $3}' /etc/passwd


Mieux encore, on peut tester une variable dans cette commande. Sous Mageia, les utilisateurs normaux (non créés par un service tel apache, mysql, etc.) ont un UID supérieur ou égal à 500. Voici un exemple de la liste des utilisateurs dont l'UID est supérieur ou égal à 500:
Code BASH :
awk -F : '$3 >= 500 {print "User : " $1 " - GID : " $3}' /etc/passwd


Ou pour n'afficher que leur nom:
Code BASH :
awk -F: '$3 >= 500 {print $1}' /etc/passwd



Afficher le nom des utilisateurs ayant un shell /bin/bash



Dans awk, on peut aussi tester des chaines !

Code BASH :
awk -F: '$NF == "/bin/bash" {print $1}' /etc/passwd



Afficher les lignes inférieures à 10 caractères



Encore un truc marrant, avec la commande ci-dessous, on affiche les lignes de moins de 10 caractères. Je grep pour ne pas afficher les commentaires et lignes commençant par un espace ou lignes vides.

Code BASH :
awk 'length < 10' /etc/samba/smb.conf | grep -v -E '^($|#| )'



Récupérer la fréquence du CPU1



Pour récupérer la fréquence du CPU0 (premier résultat) , on peut utiliser la commande ci-dessous :
Code BASH :
awk '/cpu MHz/ && (NR == 1) {print $4}' < /proc/cpuinfo 



Afficher l'état de la carte NVidia Optimus



Récupère dans le fichier /proc/acpi/bbswitch le deuxième champ. Si c'est ON on écrit ALLUME si c'est OFF, on affiche ETEINT

Code BASH :
awk '{ if ($2=="OFF")  print "ETEINT" ; if ($2=="ON") print "ALLUME"  }' /proc/acpi/bbswitch


Afficher les PID des programmes proserv2 n'écoutant pas sur 127.0.0.1



On souhaite récupérer les PID des programmes proserv2 n'écoutant pas sur 127.0.0.1. Utile au travail, j'ai galéré pour trouver donc je note :
Code BASH :
netstat -laputen | awk ' !/127.0.0.1/ && /proserv2/ { split($9,tab,"/"); print tab[1] ;}'


Si on a besoin de filtrer par exemple sur l'IP et que c'est dans une variable d'un script, on ferme la commande awk avec le simple guillemet, et on met entre guillemets la variable :
Code BASH :
 netstat -laputen | awk '/'"$ip"'/ && /proserv2/ { split($9,tab,"/"); print tab[1] ;}'


CUT



Présentation



Définition



CUT permet de supprimer une partie de chaque ligne d'un fichier, ou d'une commande en fonction d'un champ séparateur.
J'utilise CUT pour des "petites opérations"

cut s'utilise de cette façon:

Code BASH :
cut -options fichier 


Les options



-d<sep> : Sert à définir le séparateur de champ.
-f<nb> : Sert à définir <nb> champ à garder.

Exemples




Récupérer la liste des utilisateurs du système:



On peut récupérer la liste des utilisateurs du système :

Code BASH :
cut -d: -f1 /etc/passwd



Récupérer la valeur de la température du processeur 0



Dans cet exemple, j'effectue une suite de commandes avec 3 cut derrière un grep qui lui même est derrière une commande:

Code BASH :
sensors | grep 'Core 0' | cut -d+ -f2 | cut -d\( -f1 | cut -d. -f1


TR



Présentation



Définition



TR permet de traduire ou supprimer des caractères

tr s'utilise de cette façon:

Code BASH :
tr -options motif1 motif2 


Les options



-d caractere : Sert à supprimer le caractère au lieu de remplacer


Exemples



Convertir des symboles en d'autres



Pour transformer cuicui en coucou :

Code BASH :
echo cuicui | tr ui ou


Convertir toutes les MAJUSCULES en minuscules



Code BASH :
echo COUCOU | tr [:upper:] [:lower:]


Supprimer les saut de lignes



Pour supprimer les saut de lignes (utile dans un pipe) on peut utiliser

Code BASH :
commande1 | tr -d '\n' | commande2
Cette page a été vue 52356 fois