Awk

Bonjour,
Peut-on faire l'appel d'un fichier.txt dans un programme awk ?
Par exemple :
awk ' {
print "bonjour"
print "fichier.txt"
}
N.B le fichier.txt se trouve dans le même répertoire
Si quelqu'un sait comment le faire merci de me répondre.

3 réponses

  1. Bonsoir,

    La syntaxe de AWK est la suivante :
    awk [options] 'règles' fichier1 [fichier2 ...] ou
    awk [options] -f fichier_de_règles fichier1 [fichier2 ...]
    On utilise la première forme quand les règles sont courtes, ou quand l'appel se fait dans un script. C'est le cas ou l'on veut effectuer un filtrage de résultat de commande :
    <commande> | awk ... | <autre_commande>
    La sortie ne doit pas être redirigée dans un fichier d'entrée, il faut passer par un fichier intermédiaire qu'on renommera après exécution.
    Les instructions sont de la forme :
    <règle> { <action> [; <action> ...] }
    Chaque instruction s'applique à chacune des lignes du (des) fichier(s) d'entrée, sauf si passage à la ligne suivante explicite.
    L'action la plus courante est "print" qui envoie le contenu de la ligne courante ($0) vers la sortie.
    Awk dispose de fonctions internes (ressemblant à celles du C dont printf, et diverses fonctions de traitement de chaînes de caractères), de structures de contrôle (for, while, do ... while, if , else), de la fonction "system" et l'on peut écrire ses propres fonctions (appel par "gsub").

    exemple : awk -f mesregles.awk fichier.txt
    avec le contenu de "mesregles.awk" suivant :
    BEGIN { print 'Bonjour' }
    { print }
    recopiera vers la sortie le fichier "fichier.txt" avec une ligne en plus et en tête contenant "Bonjour".

    J'espère que ces quelques explications pourront te faire avancer.

    Marden.
    1. Bonjour,

      je débute avec Awk et j'aurais voulu savoir s'il était possible d'utiliser dans mon script UNIX une variable déclarée dans un programme Awk intégré à mon script.
      En fait je voudrais récupérer dans mon script UNIX la valeur de la variable après traitement par Awk.

      Merci à l'avance pour vos réponse.