2014-05-23 3 views
1

J'essaye d'imprimer une nouvelle ligne après 'chaîne' en utilisant la variable THIS dans le fichier.Imprimer une nouvelle ligne avec sed en utilisant la variable

sed -i '' 'string/a\ 
${THIS} 
' "${f}" 

Il imprime littéralement "$ {THIS}" dans le fichier. Je l'ai essayé d'utiliser des guillemets doubles pour sed mais qui conduit à des messages d'erreur:

« sed: 1: » ... « : commande un \ attend suivi du texte »

J'ai aussi essayé de Google cela et ont été la navigation sur cet excellent forum, mais n'a rien trouvé.

Une idée, s'il vous plaît? Je vous remercie!

Répondre

2

Il devrait ressembler à ceci:

THIS="foo" 
sed 's/string/string\n'"${THIS}"'/g' file.txt 

BTW, si vous n'êtes pas sûr que je vous encourage à être prudent en utilisant l'option -i. Je jouerais avec la commande sed jusqu'à ce que je suis sûr et seulement ensuite utiliser -i (qui écrase le fichier original)


Si vous remplacez une chaîne littérale (pas regex), la commande replace pourrait être mieux que sed ici:

replace string "string"$'\n'"${THIS}" file.txt 
+0

Premiers travaux mais je veux insérer THIS dans une nouvelle ligne après la ligne qui correspondent à la «chaîne». Désolé si je n'étais pas clair! – user2358929

+0

Ok. Vérifiez ma mise à jour – hek2mgl

+0

A dû modifier cela parce qu'ajouter newline n'est pas si simple sur MacOSX mais cela a fonctionné! Merci beaucoup, hek2mgl! – user2358929

Questions connexes