Sed recalcitrant
Résolu
eric_49
-
eric_49 -
eric_49 -
Bonjour,
Je voudrais dans un fichier test.txt ,
1 . faire une recherche de motif sur plusieurs lignes
2 . à la suite de ce motif ajouter 3 lignes
3 . faire cet ajout pour toutes les occurences du motif en question
j'ai essayé ça :
sed -n '/vip/d;/^debut_motif/,/fin_motif$/p' test.txt | sed -f prog.sed > sortie.txt
le prog.sed contient ça :
a\
ligne1\
ligne2\
ligne3
Donc ça ne fonctionne pas du tout : le script colle le texte partout !!
je pense qu'il faudrait arriver à chainer les commandes du type :
sed '/motif/; ajout du texte' test.txt > sortie.txt
quelqu'un peut me donner un coup de main ?
merci d'avance,
Je voudrais dans un fichier test.txt ,
1 . faire une recherche de motif sur plusieurs lignes
2 . à la suite de ce motif ajouter 3 lignes
3 . faire cet ajout pour toutes les occurences du motif en question
j'ai essayé ça :
sed -n '/vip/d;/^debut_motif/,/fin_motif$/p' test.txt | sed -f prog.sed > sortie.txt
le prog.sed contient ça :
a\
ligne1\
ligne2\
ligne3
Donc ça ne fonctionne pas du tout : le script colle le texte partout !!
je pense qu'il faudrait arriver à chainer les commandes du type :
sed '/motif/; ajout du texte' test.txt > sortie.txt
quelqu'un peut me donner un coup de main ?
merci d'avance,
Configuration: Windows XP Firefox 3.0.10
A voir également:
- Sed recalcitrant
- Supprimer fichier récalcitrant - Guide
- Remplacez le mot sed par le mot mais dans tout le texte. combien de caractères contient le document suite à cette modification (en incluant les espaces) ? ✓ - Forum Word
- Sed supprimer ligne - Astuces et Solutions
- Suupprime ligne commençant par ";" ✓ - Forum Linux / Unix
- Suppression de lignes en awk ✓ - Forum Shell
9 réponses
Salut,
[tmpfs]$ cat plop
blablabla
blablablablablabla
motif Début
blablabla
blablabla
blablabla
motif Fin
blablablablablabla
blablabla
motif Début
blablablablablabla
motif Fin
blablabla
blablablablablabla
blablabla
blablabla
motif Début
blablabla
motif Fin
blablabla
blablabla
[tmpfs]$ sed '/motif Début/,/motif Fin/{/motif Fin/a\
ligne1\
ligne2\
ligne3
}
' plop
blablabla
blablablablablabla
motif Début
blablabla
blablabla
blablabla
motif Fin
ligne1
ligne2
ligne3
blablablablablabla
blablabla
motif Début
blablablablablabla
motif Fin
ligne1
ligne2
ligne3
blablabla
blablablablablabla
blablabla
blablabla
motif Début
blablabla
motif Fin
ligne1
ligne2
ligne3
blablabla
blablabla
[tmpfs]$;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'ai compris l'erreur jipicy :
j'insère des lignes comme celles là :
<Attribute>\
<Name>ov_label1</Name>\
<Value>ORACLE</Value>\
<ActionRef>ora_consigne-1<\/ActionRef>\
<ActionRef>ora_consigne-2<\/ActionRef>\
<ActionRef>ora_consigne-3<\/ActionRef>
et ça fait l'erreur en question (si je met ligne1, ligne2 etc... pas de pb)
j'ai essayé d'echapper les / avec des \ mais ce n'est pas bon....et meme avec la première ligne
ça fait l'erreur aussi !!
j'insère des lignes comme celles là :
<Attribute>\
<Name>ov_label1</Name>\
<Value>ORACLE</Value>\
<ActionRef>ora_consigne-1<\/ActionRef>\
<ActionRef>ora_consigne-2<\/ActionRef>\
<ActionRef>ora_consigne-3<\/ActionRef>
et ça fait l'erreur en question (si je met ligne1, ligne2 etc... pas de pb)
j'ai essayé d'echapper les / avec des \ mais ce n'est pas bon....et meme avec la première ligne
ça fait l'erreur aussi !!
Y'a pas de raisons que ça ne marche pas :-\
ssh$ sed '/motif Début/,/motif Fin/{/motif Fin/a\
<lalala>xxx</lalala>\
<lololo>yyy</lololo>\
<lululu>zzz</lululu>
}
' plop
blablabla
blablablablablabla
motif Début
blablabla
blablabla
blablabla
motif Fin
<lalala>xxx</lalala>
<lololo>yyy</lololo>
<lululu>zzz</lululu>
blablablablablabla
blablabla
motif Début
blablablablablabla
motif Fin
<lalala>xxx</lalala>
<lololo>yyy</lololo>
<lululu>zzz</lululu>
blablabla
blablablablablabla
blablabla
blablabla
motif Début
blablabla
motif Fin
<lalala>xxx</lalala>
<lololo>yyy</lololo>
<lululu>zzz</lululu>
blablabla
blablablaColle-nous un bout de ton fichier et ta syntaxe "sed" s'il te plaît...
ok, voilà le script (sans fonction ^^) :
#!/usr/bin/ksh
sed '/vip/d;/^<Name>X/,/Icon>$/{/Icon>$/a\
<Attribute>
}
' test.txt > sortie.txt
et voilà un extrait du fichier à modifier :
<Service>
<Name>PROD_ORA8</Name>
<Label>Oracle 8</Label>
<Icon>logo_oracle.png</Icon>
<CalcRuleRef>Most critical</CalcRuleRef>
<MsgPropRuleRef>Unchanged</MsgPropRuleRef>
</Service>
<Association>
<Dependency/>
<SourceRef>XGDGF</SourceRef>
<TargetRef>PROD_ORA8</TargetRef>
<PropRuleRef>Unchanged</PropRuleRef>
</Association>
<Service>
<Name>XFDGF</Name>
<Label>XFDGF</Label>
<Icon>logo_oracle.png</Icon>
<Depth>2</Depth>
<CalcRuleRef>Most critical</CalcRuleRef>
<MsgPropRuleRef>Unchanged</MsgPropRuleRef>
</Service>
<Association>
<Dependency/>
<SourceRef>xtruc.fr</SourceRef>
<TargetRef>XBIDXX</TargetRef>
<PropRuleRef>Unchanged</PropRuleRef>
</Association>
<Association>
<Dependency/>
<SourceRef>XDFEYY</SourceRef>
<TargetRef>PROD_ORA8</TargetRef>
<PropRuleRef>Unchanged</PropRuleRef>
</Association>
<Service>
<Name>XXTTYU</Name>
<Icon>logo_oracle.png</Icon>
<Depth>2</Depth>
<CalcRuleRef>Most critical</CalcRuleRef>
chez moi ça ne passe pas !!
#!/usr/bin/ksh
sed '/vip/d;/^<Name>X/,/Icon>$/{/Icon>$/a\
<Attribute>
}
' test.txt > sortie.txt
et voilà un extrait du fichier à modifier :
<Service>
<Name>PROD_ORA8</Name>
<Label>Oracle 8</Label>
<Icon>logo_oracle.png</Icon>
<CalcRuleRef>Most critical</CalcRuleRef>
<MsgPropRuleRef>Unchanged</MsgPropRuleRef>
</Service>
<Association>
<Dependency/>
<SourceRef>XGDGF</SourceRef>
<TargetRef>PROD_ORA8</TargetRef>
<PropRuleRef>Unchanged</PropRuleRef>
</Association>
<Service>
<Name>XFDGF</Name>
<Label>XFDGF</Label>
<Icon>logo_oracle.png</Icon>
<Depth>2</Depth>
<CalcRuleRef>Most critical</CalcRuleRef>
<MsgPropRuleRef>Unchanged</MsgPropRuleRef>
</Service>
<Association>
<Dependency/>
<SourceRef>xtruc.fr</SourceRef>
<TargetRef>XBIDXX</TargetRef>
<PropRuleRef>Unchanged</PropRuleRef>
</Association>
<Association>
<Dependency/>
<SourceRef>XDFEYY</SourceRef>
<TargetRef>PROD_ORA8</TargetRef>
<PropRuleRef>Unchanged</PropRuleRef>
</Association>
<Service>
<Name>XXTTYU</Name>
<Icon>logo_oracle.png</Icon>
<Depth>2</Depth>
<CalcRuleRef>Most critical</CalcRuleRef>
chez moi ça ne passe pas !!
ssh$ cat eric.ksh
#! /bin/ksh
sed '/vip/d;/^<Name>X/,/Icon>$/{/Icon>$/a\
<Attribute>
}
' toto
ssh$ ./eric.ksh
<Service>
<Name>PROD_ORA8</Name>
<Label>Oracle 8</Label>
<Icon>logo_oracle.png</Icon>
<CalcRuleRef>Most critical</CalcRuleRef>
<MsgPropRuleRef>Unchanged</MsgPropRuleRef>
</Service>
<Association>
<Dependency/>
<SourceRef>XGDGF</SourceRef>
<TargetRef>PROD_ORA8</TargetRef>
<PropRuleRef>Unchanged</PropRuleRef>
</Association>
<Service>
<Name>XFDGF</Name>
<Label>XFDGF</Label>
<Icon>logo_oracle.png</Icon>
<Attribute>
<Depth>2</Depth>
<CalcRuleRef>Most critical</CalcRuleRef>
<MsgPropRuleRef>Unchanged</MsgPropRuleRef>
</Service>
<Association>
<Dependency/>
<SourceRef>xtruc.fr</SourceRef>
<TargetRef>XBIDXX</TargetRef>
<PropRuleRef>Unchanged</PropRuleRef>
</Association>
<Association>
<Dependency/>
<SourceRef>XDFEYY</SourceRef>
<TargetRef>PROD_ORA8</TargetRef>
<PropRuleRef>Unchanged</PropRuleRef>
</Association>
<Service>
<Name>XXTTYU</Name>
<Icon>logo_oracle.png</Icon>
<Attribute>
<Depth>2</Depth>
<CalcRuleRef>Most critical</CalcRuleRef>