• [^] # Re: avec awk

    Posté par . En réponse au message Comment afficher ligne apres ligne ?. Évalué à 3.

    On va écrire le programme awk en ajoutant du formattage :

    awk '
    BEGIN {flag=0};
    /1080439200/ {flag=1;}
    flag==1 {print 0ドル "[OK]"}' file_date.txt
    '


    Un ligne d'un script awk est composé d'une condition (avant les accolades) et d'un bout de code (entre les accolades). Toutes les lignes du programme sont évaluées pour chaque ligne du fichier.

    A la première ligne, on match BEGIN (début du fichier) et on assigne 0 à flag
    A la deuxième ligne, on fait en sorte que s'il y a 1080439200 sur la ligne du fichier on passe flag à 1
    A la troisième ligne, on affiche la ligne plus [OK] si flag est à un.

    Pour modifier le script il faudrait que flag passe à 0
    Tu peut donc rajouter un
    /1172050800/ { flag=0;} à la fin du script si tu veux afficher la ligne contenant 1172050800 ou en avant dernier si tu veux pas l'afficher.



    Maintenant, il y a peut être plus simple avec awk :

    awk -F'|' ' 3ドル>=1080439200 && 3ドル <= 1172050800 {print 0ドル" [OK]"}' file_dat.txt

    Avec -F je définis le séparateur à |. Awk sait ainsi comme séparer les champs.
    La condition est : Le troisième champ doit être supérieur ou égal à 1080439200 et inférieur ou égla à 1172050800. Dans ce cas on affiche la ligne entière (0ドル) en ajoutant [OK] à la fin

    J'imagine que tes nombres sont du timestamp unix et que tu veux donc isoler une période, c'est pour cela que les comparaisons peuvent fonctionner.