Forum Linux.debian/ubuntu insertion caractères spéciaux

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
10
fév.
2017

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  . É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

  • # à la fin du fichier

    Posté par  . Évalué à 2.

    Bonjour

    sed -i "$ s/$/\naujourd'hui c'est mon tour/" fichier.txt

  • # résolu

    Posté par  . É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  . É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.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.