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 revision Previous revision
Next revision
Previous revision
informatique:linux:awk [2015/08/28 11:07]
pteu [Les fonctions texte]
informatique:linux:awk [2019/06/06 11:21] (current)
pteu fonction trim
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.1440752868.txt.gz · Last modified: 2015/08/28 11:07 by pteu