User Tools

Site Tools


informatique:linux:awk

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
informatique:linux:awk [2015/08/28 09:07] – [Les fonctions texte] pteuinformatique:linux:awk [2019/06/06 09:21] – fonction trim pteu
Line 128: Line 128:
  
   * imprime chaque ligne du fichier /etc/passwd après avoir effacé le deuxième champs   * imprime chaque ligne du fichier /etc/passwd après avoir effacé le deuxième champs
-<code>+<code bash>
 awk -F ":" '{ $2 = "" ; print $0 }' /etc/passwd awk -F ":" '{ $2 = "" ; print $0 }' /etc/passwd
 </code> </code>
  
   * imprime le nombre total de lignes du fichiers   * imprime le nombre total de lignes du fichiers
-<code>+<code bash>
 awk 'END {print NR}' /etc/passwd awk 'END {print NR}' /etc/passwd
 </code> </code>
  
   * lire la 3ème ligne d'un fichier :   * lire la 3ème ligne d'un fichier :
-<code>+<code bash>
 awk '{if (NR==3) print}' <fichier> awk '{if (NR==3) print}' <fichier>
 </code> </code>
  
   * imprime le dernier champs de chaque ligne   * imprime le dernier champs de chaque ligne
-<code>+<code bash>
 awk '{print $NF}' /etc/passwd awk '{print $NF}' /etc/passwd
 </code> </code>
  
   * imprime le login et le temps de connexion.   * imprime le login et le temps de connexion.
-<code>+<code bash>
 who | awk '{print $1,$5}' who | awk '{print $1,$5}'
 </code> </code>
  
   * imprime les lignes de plus de 75 caractères. (''print'' équivaut à ''print $0'')   * imprime les lignes de plus de 75 caractères. (''print'' équivaut à ''print $0'')
-<code>+<code bash>
 awk 'length($0)>75 {print}' /etc/passwd awk 'length($0)>75 {print}' /etc/passwd
 </code> </code>
  
   * tests sur le fichier /etc/passwd :   * tests sur le fichier /etc/passwd :
-<code>+<code bash>
 awk 'BEGIN { print "Verification du fichier /etc/passwd pour ..."; awk 'BEGIN { print "Verification du fichier /etc/passwd pour ...";
             print "- les utilisateurs avec UID = 0 " ;             print "- les utilisateurs avec UID = 0 " ;
Line 170: Line 170:
  
   * supprimer le suffixe du domaine d'un nom de machine :   * supprimer le suffixe du domaine d'un nom de machine :
-<code>+<code bash>
 echo "toto.domaine.fr est un nom trop long !" | awk 'gsub(/\..*$/,"",$1) {print "machine="$1}' echo "toto.domaine.fr est un nom trop long !" | awk 'gsub(/\..*$/,"",$1) {print "machine="$1}'
 </code> </code>
  
 +  * afficher les blocs de texte du fichier FIC.txt compris entre les balises BEGIN et END :
 +<code bash>
 +awk '/BEGIN/,/END/' FILE.txt
 +</code> 
 +
 +  * supprimer (ne pas afficher) les doublons de lignes dans un fichier :
 +<code bash>
 +awk '!x[$0]++' test.tmp
 +</code>
 +
 +  * quitter la boucle awk après le premier match
 +<code bash>
 +echo -e "toto\ntoto\n" | awk '/toto/ {print; exit}'
 + toto
 +</code>
 +
 +  * émuler la fonction trim (efface les espaces avant et après une chaine) :
 +<code bash>
 +echo -e "toto   :titi\n   tata:tutu" | \
 + awk -F\: '{ sub(/^[ \t\r\n]+/, "", $1);sub(/[ \t\r\n]+$/, "", $1);print "\""$1"\""}'
 +</code>
informatique/linux/awk.txt · Last modified: 2022/04/13 13:03 by pteu