Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1152 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  {awk} comparaison entre deux lignes

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

{awk} comparaison entre deux lignes

n°1373259
raphy75
Posté le 07-02-2015 à 20:08:54  profilanswer
 

Bonjour a tous :)
 
Je viens vers vous pour demander des conseils sur un script en shell que je suis en train de terminer, enfin j'espere pouvoir le terminer. Je n'ai pas de clavier azerty donc dsl pour les accents...
 
Je decouvre la puissance de la commande awk et j'aime beaucoup. Mais je me heurte a un probleme. Je vous explique. J'ai un fichier texte qui contient des lignes et apres nettoyage j'arrive a ce resultat (je passe les formules et grep etc... le fichier texte est lu par awk mais pas mis ici, la ligne est tres longue) mais en gros mon dernier awk est le suivant ainsi que la sortie :
 
awk '{print NR " " $1 " " $2 " " $3}'
 
1 1 1 48.2872
2 1 2 47.2672
3 1 3 48.2552
4 1 4 47.2872
5 1 5 48.2962
6 1 6 48.2122
7 1 7 46.2252
8 1 8 48.0365
9 1 9 48.2212
 
Ce qui devient $1 $2 $3 $4 (1 1 1 48.2872) etc...
 
$1 est le NR du awk au dessus
$2 varie consecutivement de 1 a 16.
$3 varie consecutivement de 1 a 480 et se repete 16 fois.
 
Il y a donc 16*480 soit 7680 lignes a lire donc NR varie de 1 a 7680 (j'ai juste mis 9 ligne au dessus :).
 
Mon but est de comparer les valeurs de la sortie $4, les 48.2872, 47.2672 etc...
 
C'est a dire comme ca (traduction de ce qui se passe dans ma tete) :
 
if ($1==($3 + 1)) ET (ABS(48.2872 - 47.2672)) > 6) then print la sortie $2 $3 $4 de la ligne.
 
Le 6 est ma limite (en dB), est-ce possible de comparer de la ligne 1 a la ligne 7680 ?
 
J'ai essaye un truc du style :
 
awk '{print NR " " $1 " " $2 " " $3}' | awk '(NR==($3+1)) {print $4}'
 
Mais je n'arrive pas a trouver la suite, voir de savoir si c'est possible sans passer par une autre alternative ? De plus, meme si ca marche, est-il possible de s'arreter a la ligne 7680 et de demander a comparer $4 avec celui de la ligne precedente ?
 
J'espere que j'ai reussi a me faire comprendre, pas facile :)
 
Merci d'avance pour vos reponses :)
 
A+
 
raph
 

mood
Publicité
Posté le 07-02-2015 à 20:08:54  profilanswer
 


Aller à :
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  {awk} comparaison entre deux lignes

 

Sujets relatifs
Cherche logiciel de comparaison de fichier mode bloc - rdiff!Remplacer plusieurs lignes par un seul ";" dans un fichier
[sed] supprimer \n sur un nombre indéterminé de lignes consécutivesconcaténation de lignes de fichiers
[Shell] Comparaison de dates entre deux fichiersAfficher contenu lignes de fichiers avec critères
help SVP sur vim: comparer 2 fichiers et enlever lignes doublonnéesTrouver les lignes ds un fichier dont un champs est ds un autre
J'arrive même pas à faire marcher mon script shell de 3 lignes !Perl - Besoin de commentaire sur 3 lignes
Plus de sujets relatifs à : {awk} comparaison entre deux lignes


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR