Sed recalcitrant
Résolu/Fermé
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) ? - Guide
- Sed crlf - Astuces et Solutions
- Remplacement avec sed ✓ - Forum Shell
- Sed supprimer ligne vide - Forum Linux / Unix
9 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
5 août 2009 à 18:41
5 août 2009 à 18:41
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]$;-))
Ok, ça marche !
J'avais essayé ça mais je n'avais pas remis le motif de fin.
Bravo, tu es vraiment le gourou du sed.
Je vais m'y mettre sérieusement...
et merci beaucoup
eric
J'avais essayé ça mais je n'avais pas remis le motif de fin.
Bravo, tu es vraiment le gourou du sed.
Je vais m'y mettre sérieusement...
et merci beaucoup
eric
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
6 août 2009 à 10:14
6 août 2009 à 10:14
L'ajout et l'insertion n'acceptent qu'une seul adresse (et non pas une plage), donc il faut d'abord cibler une plage d'adresses et au sein de cette plage, cibler l'adresse qui va bien...
;-))
;-))
Encore un petit soucis :
la commande fonctionne quand je colle dans un terminal, par contre en script ça ne passe pas...
le shell me repond :
fonction '/motif_a_eviter/d;/debut_motif/,/fin_motif/{/fin_motif/a\ cannot be parsed
??
dans un script il faut peut etre mettre sur une seule ligne ?
la commande fonctionne quand je colle dans un terminal, par contre en script ça ne passe pas...
le shell me repond :
fonction '/motif_a_eviter/d;/debut_motif/,/fin_motif/{/fin_motif/a\ cannot be parsed
??
dans un script il faut peut etre mettre sur une seule ligne ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
6 août 2009 à 11:34
6 août 2009 à 11:34
Elle ressemble à quoi ta syntaxe dans le script ?
La même syntaxe que plus haut dans un script passe bien chez moi ;-\
La même syntaxe que plus haut dans un script passe bien chez moi ;-\
voilà mon script :
sed '/vip/d;/^<Name>X/,/Icon>$/{/Icon>$/a\
ligne1\
ligne2\
ligne3
}
' test.txt > sortie.txt
je ne comprends pas
sed '/vip/d;/^<Name>X/,/Icon>$/{/Icon>$/a\
ligne1\
ligne2\
ligne3
}
' test.txt > sortie.txt
je ne comprends pas
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
6 août 2009 à 11:48
6 août 2009 à 11:48
Pourquoi le message d'erreur plus haut fait état d'une fonction ?
C'est du bash ton script ?
C'est du bash ton script ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
non, c'est du ksh
!!
!!
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
6 août 2009 à 11:55
6 août 2009 à 11:55
Et pour la fonction ?
C'est possible d'avoir le fichier d'entrée et le script en entier ?
C'est possible d'avoir le fichier d'entrée et le script en entier ?
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 !!
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
6 août 2009 à 14:32
6 août 2009 à 14:32
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 !!
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
6 août 2009 à 15:08
6 août 2009 à 15:08
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>