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 :
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
Publicité
Posté le 07-02-2015 à 20:10:17
Profil supprimé
Posté le 07-02-2015 à 21:05:17
salut,
Citation :
Je decouvre la puissance de la commande awk
et tu n'as pas fini : les «formules et grep» sont très probablement inutiles, car `awk' peut sûrement le faire.
et quand je dis `awk', je veux dire un seul `awk' (pas un `awk | awk') !
ce que tu veux faire (ce que j'ai compris) est tout aussi probablement possible en utilisant un tableau, dont le contenu sera exploité après la lecture du fichier (dans `END{...}').
raphy75
Posté le 08-02-2015 à 00:10:50
Salut,
Merci pour ta reponse
Pourrais-tu expliquer comment faire avec BEGIN et END car j'ai essaye sans y arriver... Franchement je suis vraiment bloque
Je n'arrive pas a comprendre comment, sur une ligne en cours, lire le $4 de la ligne suivante et faire une comparaison avec la ligne en cours, avec un if etc... Le tout avec un awk...
---------------
I am a freak, I am unique.
Profil supprimé
Posté le 08-02-2015 à 15:46:31
tu dois conserver le $4 de la ligne précédente dans une variable (et non tenter de lire la ligne suivante), et donc comparer la variable de la ligne précédente avec la ligne courante.
voici un exemple d'utilisation d'un tableau simple rempli pendant la lecture du fichier, et exploité après:
En gros la meme chose mais avec ar, c'est grace a ca que je peu checker differentes lignes?
Cependant je ne capte toujours pas comment comparer des valeurs entre deux lignes... Ce qui m'interesse est le dernier $, et de pouvoir le comparer avec le meme $ de la ligne soit suivante, soit precedente... La je bloque
Profil supprimé
Posté le 09-02-2015 à 07:18:44
je ne peux pas t'aider comme ça.
j'ai besoin d'un extrait représentatif de l'entrée originale, et la sortie attendue correspondante, ainsi que le raisonnement qui a conduit à cette sortie.
comme je te l'ai dit, une seule instance de awk peu probablement tout faire.