AWK - Fonctions diverses
AWK a les fonctions diverses suivantes -
fermer (expr)
Cette fonction ferme le fichier de pipe.
Exemple
[jerry]$ awk 'BEGIN {
cmd = "tr [a-z] [A-Z]"
print "hello, world !!!" |& cmd
close(cmd, "to")
cmd |& getline out
print out;
close(cmd);
}'
En exécutant ce code, vous obtenez le résultat suivant -
Production
HELLO, WORLD !!!
Le script a-t-il l'air cryptique? Démystifions-le.
La première déclaration, cmd = "tr [a-z] [A-Z]" - est la commande à laquelle nous établissons la communication bidirectionnelle depuis AWK.
La déclaration suivante, à savoir, le printcommande, fournit une entrée à la commande tr. Ici&| indique une communication bidirectionnelle.
La troisième déclaration, à savoir, close(cmd, "to"), ferme le to processus après avoir concurrencé son exécution.
La prochaine déclaration cmd |& getline out stocke la sortie dans out variable à l'aide de la fonction getline.
L'instruction d'impression suivante imprime la sortie et finalement la fonction close ferme la commande.
supprimer
Cette fonction supprime un élément d'un tableau. L'exemple suivant montre l'utilisation dudelete fonction -
Exemple
[jerry]$ awk 'BEGIN {
arr[0] = "One"
arr[1] = "Two"
arr[2] = "Three"
arr[3] = "Four"
print "Array elements before delete operation:"
for (i in arr) {
print arr[i]
}
delete arr[0]
delete arr[1]
print "Array elements after delete operation:"
for (i in arr) {
print arr[i]
}
}'
En exécutant ce code, vous obtenez le résultat suivant -
Production
Array elements before delete operation:
One
Two
Three
Four
Array elements after delete operation:
Three
Four
sortie
Cette fonction arrête l'exécution d'un script. Il accepte également une optionexprqui devient la valeur de retour d'AWK. L'exemple suivant décrit l'utilisation de la fonction exit.
Exemple
[jerry]$ awk 'BEGIN {
print "Hello, World !!!"
exit 10
print "AWK never executes this statement."
}'
En exécutant ce code, vous obtenez le résultat suivant -
Production
Hello, World !!!
fflush
Cette fonction vide tous les tampons associés au fichier ou au tube de sortie ouvert. La syntaxe suivante illustre la fonction.
Syntaxe
fflush([output-expr])
Si aucune sortie-expr n'est fournie, elle vide la sortie standard. Si output-expr est la chaîne nulle (""), alors il vide tous les fichiers et tubes ouverts.
getline
Cette fonction demande à AWK de lire la ligne suivante. L'exemple suivant lit et affiche lemarks.txt fichier en utilisant la fonction getline.
Exemple
[jerry]$ awk '{getline; print $0}' marks.txt
En exécutant ce code, vous obtenez le résultat suivant -
Production
2) Rahul Maths 90
4) Kedar English 85
5) Hari History 89
Le script fonctionne très bien. Mais où est la première ligne? Laissez-nous découvrir.
Au début, AWK lit la première ligne du fichier marks.txt et le stocke dans $0 variable.
Et enfin, AWK printinstruction imprime la deuxième ligne. Ce processus se poursuit jusqu'à la fin du fichier.
prochain
le nextfonction modifie le déroulement du programme. Cela provoque l'arrêt du traitement en cours de l'espace de motif. Le programme lit la ligne suivante et recommence à exécuter les commandes avec la nouvelle ligne. Par exemple, le programme suivant n'effectue aucun traitement lorsqu'une correspondance de modèle réussit.
Exemple
[jerry]$ awk '{if ($0 ~/Shyam/) next; print $0}' marks.txt
En exécutant ce code, vous obtenez le résultat suivant -
Production
1) Amit Physics 80
2) Rahul Maths 90
4) Kedar English 85
5) Hari History 89
fichier suivant
le nextfilefonction modifie le déroulement du programme. Il arrête de traiter le fichier d'entrée actuel et commence un nouveau cycle à travers les instructions de modèle / procédures, en commençant par le premier enregistrement du fichier suivant. Par exemple, l'exemple suivant arrête le traitement du premier fichier lorsqu'une correspondance de modèle réussit.
Créez d'abord deux fichiers. Laisse nous direfile1.txt contient -
file1:str1
file1:str2
file1:str3
file1:str4
Et file2.txt contient -
file2:str1
file2:str2
file2:str3
file2:str4
Utilisons maintenant la fonction nextfile.
Exemple
[jerry]$ awk '{ if ($0 ~ /file1:str2/) nextfile; print $0 }' file1.txt file2.txt
Production
En exécutant ce code, vous obtenez le résultat suivant -
file1:str1
file2:str1
file2:str2
file2:str3
file2:str4
revenir
Cette fonction peut être utilisée dans une fonction définie par l'utilisateur pour renvoyer la valeur. Veuillez noter que la valeur de retour d'une fonction n'est pas définie si expr n'est pas fourni. L'exemple suivant décrit l'utilisation de la fonction de retour.
Commencez par créer un functions.awk fichier contenant la commande AWK comme indiqué ci-dessous -
Exemple
function addition(num1, num2) {
result = num1 + num2
return result
}
BEGIN {
res = addition(10, 20)
print "10 + 20 = " res
}
En exécutant ce code, vous obtenez le résultat suivant -
Production
10 + 20 = 30
système
Cette fonction exécute la commande spécifiée et renvoie son état de sortie. Un état de retour 0 indique qu'une exécution de commande a réussi. Une valeur différente de zéro indique un échec de l'exécution de la commande. Par exemple, l'exemple suivant affiche la date actuelle et montre également l'état de retour de la commande.
Exemple
[jerry]$ awk 'BEGIN { ret = system("date"); print "Return value = " ret }'
En exécutant ce code, vous obtenez le résultat suivant -
Production
Sun Dec 21 23:16:07 IST 2014
Return value = 0