2011-11-16 4 views
1

Je voudrais insérer une ligne avant un motif avec sed: - Insérer « XmlRootElement (name = « ABC ») » avant « public class »sed - insérer une ligne avant un modèle

C'est le scénario:

'/public class/i\@XmlRootElement(name="ABC")' 

Cependant j'ai eu erreur quand je lance ceci:

sed -e script testfile.txt 
sed: -e expression #1, char 13: Unterminated `s' command 

quelqu'un peut-il me aider?

Merci

Répondre

4

Pour les années sed je suis habitué, vous devez inclure un saut de ligne après votre i\, et «mettre fin à l'insert avec une ligne blanche, à savoir

sed '/public class/i\ 
@XmlRootElement(name="ABC") 

' file > outFile 

Note, la ligne vide après votre nouveau texte inséré.

Notez, assurez-vous que vous n'obtenez aucun espace à la fin de la ligne, après le i\. Comme je me rends compte maintenant que vous gardez votre sed dans un fichier de script séparé, les contraintes de formatage s'appliquent également, il suffit de retirer la paire '' entourant le code.

Et plus important encore, votre script échoue parce que vous utilisez -e pour un fichier script sed, utilisez

sed -f script testfile.txt 

-e est utilisé si votre intégration de votre script sed en ligne, Ma 1ère solution ci-dessus pourrait être pré -pendu avec -e.

Modifier Correction des références à a\ à `i \ '. Doah

espérons que cela aide.

+0

merci. Ça marche! Fyi, j'ai utilisé sed pour windows dans UnxUtils.zip. Le script est mis dans un fichier texte fonctionne lors de la suppression des guillemets simples – TommyQ

+0

Oui, juste terminé l'édition, en mentionnant cette option. Merci pour le vote. Bonne chance. – shellter

2

Cela pourrait fonctionner pour vous:

# cat <<\! >/tmp/test.sed 
> /^aaa/i\ 
> xxx 
> /^bbb/a\ 
> yyy\ 
> zzz 
> /^ccc/c\ 
> the end 
> ! 
# echo -e "aaa\nbbb\nccc" | sed -f /tmp/test.sed 
xxx 
aaa 
bbb 
yyy 
zzz 
the end 

ou de la ligne de commande:

# echo -e "aaa\nbbb\nccc" | sed -e '/^aaa/i\xxx' -e '/^bbb/a\yyy\nzzz' -e '/ccc/c\the end' 
xxx 
aaa 
bbb 
yyy 
zzz 
the end 

Une référence très utile est here

Questions connexes