substitue une valeur par une autre a deux reprise (sed?) - Shell/Batch - Programmation
Marsh Posté le 14-12-2002 à 22:36:05
tabasko a écrit : Salut a tous, |
je propose une solution tres simple sans sed....
|
comment ca marche ?
grep XXXX DANS_FICHIERS > LOG
groupe que les lignes contenant XXXX dans le fichier LOG
ensuite je coupe (CUT) les colones inutiles ici ce qui est avant le ':' et le ':' lui meme
si XXXX est coince dans une phrase logique exemple
nnnnnnnnnnn:XXXX,vvvvvvvvvvvv
en faisant 2 cuts un pour eliminer le debut (ici les 'n' et un deuxieme pour virer la fin (ici les 'v', tu obtients que les XXXX
bref en plus de ca... tu copie ton resultat dans le meme fichier log puisque les anciennes infos ne te sont plus utiles, tu affiche le resultat.
et pour finir tu efface le fichier log pour pas laisser de traces et donc etre bien propre...
dans ton cas genere le fichier log mais ne l'efface pas ....
puisque tu veux un fichier4....
Marsh Posté le 14-12-2002 à 22:39:55
dans ton cas
fichiers
"a"
"a b"
"b c"
le deuxieme a doit etre coupe
le second b de meme
....
je pense que maintenant tu as tout pour reussir ton script
je te conseille de relire les man cut, et bash (paragraphes des redirections)....
pour une manipulation de chaines si simple inutile de faire appel a sed....
ceci dit sed saurrait le faire mais bon je maitrise pas trop sed....
Marsh Posté le 14-12-2002 à 22:43:32
salut,
merci pour ta reponse.
enfait c'est un peu plus compliqué
mon fichier1 contient 150'0000
mon fichier2 en contient 40'000
mon fichier3 en contient 800
c'est surtout de la que vient mon probleme ...
Marsh Posté le 14-12-2002 à 22:51:44
tabasko a écrit : salut, |
ET alors ???
le traitement va prendre plus de temps c tout...
par contre si tu extrait tes infos de fichiers non structurees type mots dans 3 courriers c'est plus galere mais la methode est a meme...
par contre si c'est des fichier structure c'est tres simple a adapter...
exemple de fichier structure
2002 10 12 : ventre : 10000 : PU : 123.32
2002 11 12 : ventre : 11111 : pu : 132.23
enfin bref des fichier dont les paragraphes sont tous les meme dans la forme....
la des cuts et grep suffisent a selectionner les information utiles....
j'essaye d'etre clair, mais bon il faut quand meme un minimu de tehorie barbante a lire...
les man pages... j':love: les man pages....
Marsh Posté le 14-12-2002 à 22:59:03
je suis plutot perdu, j'ai meme du mal a pigr l'exemple illustratif que tu as eu la gentillesse de me faire, c'est pas du tout mon rayon, mais ca me fait reflechir ...
et je suis un lutteur
Marsh Posté le 14-12-2002 à 23:11:55
tabasko a écrit : je suis plutot perdu, j'ai meme du mal a pigr l'exemple illustratif que tu as eu la gentillesse de me faire, c'est pas du tout mon rayon, mais ca me fait reflechir ... |
ben la je peux pas faire beaucoup plus simple comme exemple...
l'exemple est directement inspire du probleme que tu as decrit...c'est pour ca...sauf qu'il a fallu generer 3 fichiers bidons pour ecrire un script exemple....
mais te laisse pas perturber par les noms de fichiers s'appelant $DATE
ou par les lignes ou je genere les fichiers c'est le script qui compte enfin sa forme....
avec un peu de methode et de patience et surtout de lecture des man pages tu vas arriver a faire un truc similaire pour tes fichiers...
Marsh Posté le 14-12-2002 à 23:20:56
bon je progresse, je comprend ce que tu veux faire ... c'est deja ca
alors j'ai des questions supplementaires qui me viennent.
le resultat de mon premier grep, je voudrai le rajouter sur la ligne de mon fichier1.
si j'ai compris correctement je devrais le faire avec un cut ?
mais comment le script va savoir ou me le placer...
putain merde, pourquoi suis je aussi c..
Marsh Posté le 14-12-2002 à 23:24:12
et chaque grep d'une ligne a une autre de mon fichier1 ... la commande doit integrer une variable ...
je ferai mieux de faire autre chose, je vais me pendre la ...
grep aaaa fichier1
aaaa bbbb
comment je prend ce resultat pour l'inscrire dans mon fichier1
aaaa est une variable d'une ligne a une autre, comment dois je le scripter (awk ?)
Marsh Posté le 15-12-2002 à 01:45:48
je viens de tomber su la commande JOIN
join - join lines of two files on a common field
c'est pas mortel ca
Marsh Posté le 14-12-2002 à 21:02:18
Salut a tous,
J'expose ma requete:
J'ai un fichier texte (fichier1), suposons qu'il contienne juste la lettre "a".
J'ai un autre fichier texte (fichier2) qui contient "a b".
J'ai un troisieme et dernier fichier qui contient "b c".
Je cheche a faire un script qui me donne un fichier final qui contiendrait :
a b c
(L'exemple a l'air simple, mais bon mes 3 fichiers contiennent plusieurs dixaines de millier lignes chacun).
Je pense qu'il existe peut etre mieux qu'un script de plusieurs millier de ligne en sed s/a/b/g | sed s/b/c/g > fichier4 ou autre chose je sais pas ... je suis pas programmeur a la base
Merci pour votre aide.