frouin.me

awk

Introduction

user

Jean-Michel Frouin

CTO @ WakeOnWeb.com


shell bash home embarque

awk

Posted by Jean-Michel Frouin on .
Featured

shell bash home embarque

awk

Posted by Jean-Michel Frouin on .

Définir les séparateurs

Entrée : FS

Pour définir le séparateur d'entrée : FS

BEGIN { 
  FS=SUBSEP=" "
}
{
  #Traitement
}

Sortie : OFS

Pour définir le séparateur de sortie : OFS

BEGIN { 
  OFS="\t"
}
{
  #Traitement
}

Mise en forme

Définir le format de sortie

Pour les nombres :

BEGIN { 
  OFMT = "%.0f"
}
{
  #Traitement
}

Afficher des chaines

awk supporte la panoplie du printf :

printf("%04d", value)

Chaines de caractères

Concaténation

La concaténation de chaines est très simple, et ne nécessite aucuns opérateurs :

new_string = string" "string2 

Longueur (strlen)

len = length(chaine)

Rechercher (find)

idx=index(date,":")

Remplacement (replace)

On peut remplacer un caractère par un autre dans une chaîne.

gsub("/", "-", date)

Split

awk permet d'exploser (explode en php) une chaîne de caractères.
Il stocke les morceaux dans un tableau, ici, nommé array.
La variable len contient le nombre d'éléments du tableau.
Enfin le caractère de séparation est le guillemet.

len=split($0, array, "\"")

Ensuite on peut utiliser array[1] jusqu'à array[len]

for(i=1;i<=len;i++){
  print array[i]
};

Sous Chaîne (substr)

part1=substr(date,0,idx-1)

Tests

Si

if($STRING ~/PATTERN/ || ENTIER != 2 ) {
}
else
{
}

Commande système

awk peut aussi, comme beaucoup d'autres langages de script,
appeler une commande système:

cmd="date -u +\"%Y-%m-%d %H:%M:%S %z\" --date \""date"\""
cmd|getline date; 
close(cmd);
user

Jean-Michel Frouin

https://frouin.me

CTO @ WakeOnWeb.com