Logo Khaganat

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
fr:bestpractices [2018/03/28 16:27] – /* tr */ merlin8282fr:bestpractices [2018/03/28 17:12] – [awk] /* petit oubli */ merlin8282
Ligne 154: Ligne 154:
   19 20 21 22 23 24 25     19 20 21 22 23 24 25  
   26 27 28 29 30 31   26 27 28 29 30 31
 +  
   $ cal dec 9999   $ cal dec 9999
      December 9999            December 9999      
Ligne 192: Ligne 193:
  
 Remplacer les caractères 'a' et 'c' par 'x' et 'v'. N'y ayant pas d'autres caractère à "matcher" (le premier paramètre à la commande ''tr''), 'p' et 'b' n'ont ici aucun intérêt et peuvent être omis / n'ont aucune incidence. Remplacer les caractères 'a' et 'c' par 'x' et 'v'. N'y ayant pas d'autres caractère à "matcher" (le premier paramètre à la commande ''tr''), 'p' et 'b' n'ont ici aucun intérêt et peuvent être omis / n'ont aucune incidence.
 +
 +
 +==== awk ====
 +''awk'' est plus qu'une "simple" commande, c'est un langage de programmation permettant notamment de manipuler des chaînes de caractères. Voici quelques exemples, qui sont loin d'être exhaustifs quant à ce qu'il est possible de faire avec awk. Cela dit, ils donneront déjà un petit aperçu.
 +
 +  $ sentence="year-month-day hours:minutes:seconds :ms \"this is a comment\""
 +  $ printf "%s\n" "$sentence" | awk '{print $1}'
 +  year-month-day
 +
 +Cela affiche le premier élément de la phrase, les éléments étant (par défaut) les chaînes de caractères séparées par une espace.
 +
 +  $ printf "%s\n" "$sentence" | awk '{print $NF}'
 +  comment"
 +
 +''$NF'' est une variable spéciale pointant vers le dernier élément.
 +
 +  $ printf "%s\n" "$sentence" | awk 'BEGIN{FS = "\""} {print $(NF-1)}'
 +  this is a comment
 +
 +Ici on redéfinit le séparateur, qui est par défaut l'espace, pour utiliser à la place le caractère ''"''. On dit à awk d'afficher l'avant-dernier (''$(NF-1)'') élément.
 +
 +
 +  $ printf "%s\n" "$sentence" | awk 'BEGIN{FS = " :"} {print $2}'
 +  ms "this is a comment"
 +
 +Redéfinition du séparateur à '' :'' (espace + double-point), et affichage du second élément.
 +
 +  $ printf "%s\n" "$sentence" | awk '/minutes/ {print $0}'
 +  year-month-day hours:minutes:seconds :ms "this is a comment"
 +
 +On peut aussi matcher des expressions rationnelles avec ''awk''. Ici, toutes les lignes contenant le mot ''minutes'' seront affichées, ''$0'' représentant la ligne entière.
 +
 +  $ printf "%s\n" "$sentence" | awk '/minutes/ {print $3}'
 +  :ms
 +
 +On peut aussi n'afficher que le troisième élément des lignes contenant le mot ''minutes''.
 +
 +  $ lines="$(echo "line1 line2 line3" | tr " " "\n")"
 +  $ printf "%s\n" "$lines" | awk '$1 ~ /line2/ {print $0}'
 +  line2
 +
 +On peut dire à awk de ne chercher une chaîne correspondante que dans un seul élément ; ici on cherche ''line2'' dans le premier élément de chaque ligne.
 +
 +  $ printf "%s\n" "$lines" | awk '/line2/ {print $0}'
 +  line2
 +
 +Cela revient au final à la même chose que ci-dessus, étant donné que l'on n'a qu'un seul élément par ligne.
 +
 +  $ printf "%s\n" "$lines" | awk '/line/ {print $0}'
 +  line1
 +  line2
 +  line3
 +
 +On matche ''line'', donc toutes les trois lignes sont affichées.
 +
 +  $ printf "%s\n" "$lines" | awk '/e3/ {print $0}'
 +  line3
 +
 +Eh oui, seul ''e3'' est matché.
 +
  
  
CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/bestpractices.txt · Dernière modification : 2021/12/03 19:19 de 127.0.0.1

Licences Mentions légales Accueil du site Contact