Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 21/01/2010, 12h10   #1
Membre habitué
 
Luis
Inscription : avril 2006
Messages : 397
Détails du profil
Informations personnelles :
Nom : Luis

Informations forums :
Inscription : avril 2006
Messages : 397
Points : 112
Points : 112
Par défaut modifier fichier ascii avec vi

Bonjour a tous,
je ne suis pas sur d'etre au bon endroit pour ma question, mais bon.


Je voudrais ajouter du text a un fichier mais a certaines lignes seulement, et je ne sais pas comment faire.
Voici un fragment du fichier:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
000000001 LDR   L ^^^^^nam^^2200145Ia^45e0
000000001 008   L 090226s9999^^^^xx^^^^^^^^^^^^000^0^und^d
000000001 260   L $$c2007
000000001 269   L $$a01/04/2007
000000001 999	L $$a01/04/2007$$b35978$$cBoletin ICE
000000001 FMT   L BK
000000002 LDR   L ^^^^^nam^^2200157Ia^45e0
000000002 008   L 090226s9999^^^^xx^^^^^^^^^^^^000^0^und^d
000000002 260   L $$c2007
000000002 269   L $$a01/04/2007
000000002 999	L $$a01/04/2007$$b35980$$cBoletin ICE
000000002 FMT   L BK
Comme vous pouvez voir, chaque registre demarre a LDR et termine a FMT
Donc je voudrais ajouter: $$eGEN a la fin de toutes les lignes qui ont le tag 999
Exemple:

Code :
000000002 999	L $$a01/04/2007$$b35980$$cBoletin ICE
Et je voudrais que apres traitement ca devienne:


Code :
000000002 999	L $$a01/04/2007$$b35980$$cBoletin ICE$$eGEN
Je crois que c'est possible directement avec VI, qqu'un saurait comment faire?
Merci de votre aide
ldiaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2010, 14h38   #2
Membre confirmé
 
Avatar de exodev
 
Inscription : septembre 2009
Messages : 201
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : septembre 2009
Messages : 201
Points : 292
Points : 292
Hmm je suis pas sûr si la syntaxe va passer de ton côté mais sous vi tu peux essayer :

Code :
:%s/^\([0-9][0-9]* 999[[:space:]].*\)$/\1$$eGEN/g
Après même sans vi il est également possible de faire ça via la commande sed
exodev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2010, 14h58   #3
Membre chevronné
 
Inscription : septembre 2007
Messages : 685
Détails du profil
Informations personnelles :
Âge : 48
Localisation : Suisse

Informations forums :
Inscription : septembre 2007
Messages : 685
Points : 723
Points : 723
Bonjour,

On peut le faire avec awk aussi:
Code :
awk '{if ($2 == "999") {$0=$0"\$\$eGEN/g"} print}' file_in > file_out
__________________
Un problème bien posé est déjà résolu (H. Bergson).
jmelyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2010, 15h07   #4
Membre habitué
 
Luis
Inscription : avril 2006
Messages : 397
Détails du profil
Informations personnelles :
Nom : Luis

Informations forums :
Inscription : avril 2006
Messages : 397
Points : 112
Points : 112
Excellent !!! ca marche bien,
j'ai juste enleve le /g apres le GEN qui appaissait, mais pour le reste genial

MERCI
Ciao
ldiaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 15h04.


 
 
 
 
Partenaires

Hébergement Web