Bonjour à tous
J'aimerais insérer la ligne suivante à la fin d'un fichier nommé script1.sh
aujourd'hui c'est mon tour
la présence du caractère spécial ' m’empêche de le faire.
J'ai écrit la commande suivante:
sed -i '$a\'aujourd'hui c'est mon tour' script1.sh
ça ne marche pas
J'ai aussi essayé
sed -i '$a\'aujourd\'hui c\'est mon tour' script1.sh
Qui ne marche aussi pas
help svp
# il manque des caracteres, ou c'est une syntaxe que je ne connais pas.
Posté par NeoX . Évalué à 4. Dernière modification le 10 février 2017 à 17:38.
à la fin d'un fichier
echo "aujourd'hui c'est mon tour" >> fichier.txt
ou comme on me le faisait remarqué dans un autre post
print "%s" "aujourd'hui c'est mon tour" >>fichier.txt
evidemment si l'exercice porte sur
sed
chez moi la syntaxe suivante
fonctionne(edit du 20170210 : fonctionne presque)sed -i -e "amachaine_a_mettre_a_la_faim" fichier.txt
le -i pour dire de le faire dans le fichier lui meme
le -e pour lui dire d'evaluer le contenu
les " pour proteger les '
le premier a pour ajouter
suivi de la chaine
par contre
sed
travaille en mode 'ligne'il ajoute donc ta chaine apres chaque ligne du fichier
alors que toi tu veux uniquement à la fin du fichier
[^] # Re: il manque des caracteres, ou c'est une syntaxe que je ne connais pas.
Posté par . . Évalué à 1.
Attention, votre commande sed insérera le texte après chaque ligne du fichier.
[^] # Re: il manque des caracteres, ou c'est une syntaxe que je ne connais pas.
Posté par NeoX . Évalué à 2.
c'est ce que j'ai dit
[^] # Re: il manque des caracteres, ou c'est une syntaxe que je ne connais pas.
Posté par . . Évalué à 1.
Au temps pour moi. Mais j'ai tiqué car vous avez proposé une solution erronée alors que le posteur original avait bien adressé la fin du fichier dans sa commande.
[^] # Re: il manque des caracteres, ou c'est une syntaxe que je ne connais pas.
Posté par NeoX . Évalué à 2.
bien vu, ma formulation etait ambigue
j'ai corrigé en ajoutant "fonctionne presque"
[^] # Re: il manque des caracteres, ou c'est une syntaxe que je ne connais pas.
Posté par . . Évalué à 1.
Préfixez la commande par \$ et cela fonctionnera parfaitement ;-)
# à la fin du fichier
Posté par MicP . Évalué à 2.
Bonjour
sed -i "$ s/$/\naujourd'hui c'est mon tour/" fichier.txt
# résolu
Posté par OB.ph . Évalué à 1.
Une fois de plus merci. Mon problème est résolu
# Echappement des apostrophes
Posté par . . Évalué à 2.
Sinon, pour échapper les apostrophes dans une chaîne entre apostrophes, il suffit de scinder la chaîne au niveau des apostrophes et de concaténer les morceaux en plaçant les apostrophes dans des chaînes entre guillemets :
sed -i '$aaujourd'"'"'hui c'"'"'est mon tour' script1.sh
Désolé pour le manque de clarté, c'est la fin de la semaine :-p
[^] # Re: Echappement des apostrophes
Posté par MicP . Évalué à 1.
Il y a aussi :
sed -i '$ s/$/\naujourd'"\'"'hui c'"\'"'est mon tour/' gfgf
fichier.txt[^] # Re: Echappement des apostrophes
Posté par . . Évalué à 3. Dernière modification le 11 février 2017 à 10:37.
Les backslash sont redondants dans votre solution et la commande est plus longue que celle proposée par le posteur original.
[^] # Re: Echappement des apostrophes
Posté par MicP . Évalué à 3.
Merci pour les remarques, j'essaierais d'être plus attentif.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.