Sed Insérer Plusieurs Lignes
Je suis en train de faire un insert avec sed (juste après avoir lu sur elle) et je suis perplexe en essayant d'insérer plusieurs lignes?
Ce que je suis en train de faire, c'est:
sed -i "${line} i\
/* Name - ID */\
select @ID = NULL \
from Animals \
where VrsnID = @VrsnID \
and Request= \"Request\" \
\
" animalNames.txt
Note echo $line
== 131
Nouveau Problème
Tout s'affiche sur une seule ligne dans la sortie? (il manque également le premier tiret)
/* Name - ID */ select @ID = NULL from Animals where VrsnID = @VrsnID and Request= "Request"
Résolu
Mais ce lève:
sed: -e expression #1, char 47: unknown command: `
'
Aucune idée pourquoi?
Merci pour votre temps
- La version de sed utilisez-vous ? GNU/BSD ?
- GNU désolé je ne savais pas que fait un dif
- Fonctionne ici, GNU sed version 4.2.1
- Je ne suis pas sûr de ce que j'ai changé, mais il fonctionne maintenant, mais tout est sur une seule ligne?
Vous devez vous connecter pour publier un commentaire.
Pour la nouvelle difficulté :
Utilisez une double barre oblique inverse
\\
-f
argument. Vous pouvez faire du sed fichier de script.r
de commande.Dans un script shell, barre oblique inverse+retour à la ligne s'étend à rien. C'est une façon de continuer à la ligne suivante sans avoir réellement un saut de ligne dans la chaîne. Donc, ce que sed voit, c'est juste un gros ligne. Comparer:
Vous avez besoin pour passer une barre oblique et un retour à la ligne à sed, afin de s'échapper de la barre oblique inverse en mettant une autre barre oblique inverse avant.
Cela peut être plus lisible si vous passer le script sur l'entrée standard comme un ici le document. Vous avez besoin de quitter l'expansion sur de substituer
${line}
, si vous avez encore besoin de doubler la barre oblique inverse.Cela pourrait fonctionner pour vous: