Comment reconnaitre le caratère backslash
Résolu/Fermé
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
-
19 nov. 2015 à 16:16
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 - 20 nov. 2015 à 08:12
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 - 20 nov. 2015 à 08:12
A voir également:
- Comment reconnaitre le caratère backslash
- Backslash qwerty - Forum Windows
- Backslash mac ✓ - Forum Réseaux sociaux
- Je cherche comment faire un backslash - Forum Windows
- Comment reconnaître une fausse conversation whatsapp - Forum iPhone
- Application pour reconnaître les boutons - Accueil - Outils
6 réponses
dubcek
Messages postés
18753
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
7 novembre 2024
5 619
19 nov. 2015 à 16:29
19 nov. 2015 à 16:29
hello
$ cat fichier
\"TOTO"\
$ sed 's/\\"TOTO"\\/rien du tout/g' fichier
rien du tout
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
19 nov. 2015 à 17:20
19 nov. 2015 à 17:20
Bonjour et merci pour ta réponse dubcek, d'abord je fais une petite rectification sur la chaine de caractères que je veux remplacer par rien (c'est à dire en fait supprimer cette chaine), ce n'est pas comme j'ai dit dans mon premier message la chaine \"TOTO"\ mais la chaine \"TOTO\"
De plus je précise bien que je veux faire ça dans un shell pas directement dans une console, j'ai essayé de mettre des backslash devant les backslash déjà existants mais ça ne marche pas.
Voici ce que j'ai fait dans mon shell:
sed -i -e 's/\\"TOTO\\"/g' fichier
A l'exécution il me met le message:
sed: -e expression n°1, caractère 19: commande `s' inachevée
Voilà, merci pour votre aide.
De plus je précise bien que je veux faire ça dans un shell pas directement dans une console, j'ai essayé de mettre des backslash devant les backslash déjà existants mais ça ne marche pas.
Voici ce que j'ai fait dans mon shell:
sed -i -e 's/\\"TOTO\\"/g' fichier
A l'exécution il me met le message:
sed: -e expression n°1, caractère 19: commande `s' inachevée
Voilà, merci pour votre aide.
dubcek
Messages postés
18753
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
7 novembre 2024
5 619
20 nov. 2015 à 08:12
20 nov. 2015 à 08:12
il manqe un /
sed -i -e 's/\\"TOTO\\"//g' fichier
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
19 nov. 2015 à 17:35
19 nov. 2015 à 17:35
Salut,
$ var='la chaine \"TOTO"\ mais la chaine \"TOTO\"'
$ echo "${var}"
la chaine \"TOTO"\ mais la chaine \"TOTO\"
$ echo "${var}" | sed 's/\\"[^\]*\\"//'
la chaine \"TOTO"\ mais la chaine
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
19 nov. 2015 à 18:06
19 nov. 2015 à 18:06
Bonsoir, merci pour ta réponse zipe31 mais mon problème n'est pas de faire un echo dans une console, mon problème est de remplacer dans un fichier nommé fichier la chaine de caractères \"TOTO\" par rien du tout. Supposons que dans mon fichier j'ai ceci:
azertyuiop\"TOTO\"qsdfghjklm
à la sortie dans mon nouveau fichier je veux avoir ceci:
azertyuiopqsdfghjklm
Je précise que je ne veux pas faire ça dans une console mais dans un shell programmé dans un .sh
Merci pour vos réponses.
azertyuiop\"TOTO\"qsdfghjklm
à la sortie dans mon nouveau fichier je veux avoir ceci:
azertyuiopqsdfghjklm
Je précise que je ne veux pas faire ça dans une console mais dans un shell programmé dans un .sh
Merci pour vos réponses.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
19 nov. 2015 à 18:09
19 nov. 2015 à 18:09
$ cat plop
azertyuiop\"TOTO\"qsdfghjklm
$ sed 's/\\"[^\]*\\"//' plop
azertyuiopqsdfghjklm
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
19 nov. 2015 à 18:43
19 nov. 2015 à 18:43
Re-bonsoir, zipe31 ce que tu me dis fonctionne si je passe la commande dans une console mais ça ne marche pas dans un programme shell écrit dans un fichier de commandes .sh
De plus si dans mon fichier j'ai par exemple \"TITI"\ et plus loin \"TOTO\" il va me supprimer \"TITI"\ parce que c'est le premier qu'il trouve. Mais moi ce que je veux c'est que dans mon fichier quand il rencontre la chaine \"TOTO\" je veux qu'il la supprime et qu'il ne supprime pas \"TITI"\
J'nsiste sur le fait qu'il ne s'agit pas pour moi de faire des echo sur une console mais dans un fichier donné supprimer la chaine de caractères \"TOTO\" par lancement d'un fichier de commandes shell.
De plus si dans mon fichier j'ai par exemple \"TITI"\ et plus loin \"TOTO\" il va me supprimer \"TITI"\ parce que c'est le premier qu'il trouve. Mais moi ce que je veux c'est que dans mon fichier quand il rencontre la chaine \"TOTO\" je veux qu'il la supprime et qu'il ne supprime pas \"TITI"\
J'nsiste sur le fait qu'il ne s'agit pas pour moi de faire des echo sur une console mais dans un fichier donné supprimer la chaine de caractères \"TOTO\" par lancement d'un fichier de commandes shell.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
19 nov. 2015 à 18:50
19 nov. 2015 à 18:50
Le contenu du fichier plop :
Le résultat de la commande sed sur le fichier plop dans un terminal :
On crée un script bash :
On exécute le script :
Le contenu du fichier plop après l'exécution du script :
What else ? ;-))
$ cat plop
azertyuiop\"TOTO\"qsdfghjklm
De plus si dans mon fichier j'ai par exemple \"TITI"\ et plus loin \"TOTO\"
il va me supprimer \"TITI"\ parce que c'est le premier qu'il trouve.
Mais moi ce que je veux c'est que dans mon fichier quand il rencontre
la chaine \"TOTO\" je veux qu'il la supprime et qu'il ne supprime pas \"TITI"\
Le résultat de la commande sed sur le fichier plop dans un terminal :
$ sed 's/\\"TOTO\\"//' plop
azertyuiopqsdfghjklm
De plus si dans mon fichier j'ai par exemple \"TITI"\ et plus loin
il va me supprimer \"TITI"\ parce que c'est le premier qu'il trouve.
Mais moi ce que je veux c'est que dans mon fichier quand il rencontre
la chaine je veux qu'il la supprime et qu'il ne supprime pas \"TITI"\
On crée un script bash :
$ cat foo.sh
#!/bin/bash
sed -i.bak 's/\\"TOTO\\"//' $1
cat $1
On exécute le script :
$ ./foo.sh plop
azertyuiopqsdfghjklm
De plus si dans mon fichier j'ai par exemple \"TITI"\ et plus loin
il va me supprimer \"TITI"\ parce que c'est le premier qu'il trouve.
Mais moi ce que je veux c'est que dans mon fichier quand il rencontre
la chaine je veux qu'il la supprime et qu'il ne supprime pas \"TITI"\
Le contenu du fichier plop après l'exécution du script :
$ cat plop
azertyuiopqsdfghjklm
De plus si dans mon fichier j'ai par exemple \"TITI"\ et plus loin
il va me supprimer \"TITI"\ parce que c'est le premier qu'il trouve.
Mais moi ce que je veux c'est que dans mon fichier quand il rencontre
la chaine je veux qu'il la supprime et qu'il ne supprime pas \"TITI"\
What else ? ;-))
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
19 nov. 2015 à 19:13
19 nov. 2015 à 19:13
OK !! OK !! OK !! merci beaucoup nothing else ça marche mille excuses j'avais pas bien copié la commande. Encore merci.