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);