Remplacer " par \" avec awk
Résolu
sel
-
sel -
sel -
Bonjour,
Je tente d'écrire un script qui me permet de remplacer des guillements (") par un backslash guillement: \", dans un script shell avec awk.
Voici la commande que j'ai tenté d'utiliser:
desc="toto\"titi\"tata\""
gsub(/\"/, "\\", desc)
print "desc: "desc
Et voici le résultat que j'obtiens: desc: toto\titi\tata\
Alors que j'attends le résultat suivant: toto\"titi\"tata\"
Est-ce que quelqu'un aurait une idée du problème ou une autre solution à proposer ???
Merci d'avance pour votre aide
Je tente d'écrire un script qui me permet de remplacer des guillements (") par un backslash guillement: \", dans un script shell avec awk.
Voici la commande que j'ai tenté d'utiliser:
desc="toto\"titi\"tata\""
gsub(/\"/, "\\", desc)
print "desc: "desc
Et voici le résultat que j'obtiens: desc: toto\titi\tata\
Alors que j'attends le résultat suivant: toto\"titi\"tata\"
Est-ce que quelqu'un aurait une idée du problème ou une autre solution à proposer ???
Merci d'avance pour votre aide
A voir également:
- Remplacer " par \" avec awk
- Remplacer disque dur par ssd - Guide
- Remplacer par word - Guide
- Remplacer coco - Accueil - Réseaux sociaux
- Quel site pour remplacer coco - Accueil - Réseaux sociaux
- Remplacer carte graphique - Guide
5 réponses
Je me suis trompée dans la commande:
desc="toto\"titi\"tata\""
gsub(/\"/, "\\\"", desc)
print "desc: "desc
Et j'obtiens le résultat suivant: desc: toto"titi"tata"
Je ne comprends pas pourquoi le backslash(\) n'est pas ajouté
desc="toto\"titi\"tata\""
gsub(/\"/, "\\\"", desc)
print "desc: "desc
Et j'obtiens le résultat suivant: desc: toto"titi"tata"
Je ne comprends pas pourquoi le backslash(\) n'est pas ajouté
Salut,
Y'a comme un os dans ton énoncé, non ?
Ta variable est définie tel que : desc="toto\"titi\"tata\""
ce qui donne donc toto\"titi\"tata\"
et tu dis attendre :
Alors que j'attends le résultat suivant: toto\"titi\"tata\"
Cherchez l'erreur ;-\
:-))
Y'a comme un os dans ton énoncé, non ?
Ta variable est définie tel que : desc="toto\"titi\"tata\""
ce qui donne donc toto\"titi\"tata\"
et tu dis attendre :
Alors que j'attends le résultat suivant: toto\"titi\"tata\"
Cherchez l'erreur ;-\
:-))
C'est ça que tu veux :
jp@MDK:~/tmpfs ssh$ echo $desc toto"titi"tata" jp@MDK:~/tmpfs ssh$ echo $desc | sed 's/\"/\\\\"/g' toto\\"titi\\"tata\\" jp@MDK:~/tmpfs ssh$;-)
Merci jipicy,
j'utilise la commande sed avant d'utiliser l'awk, et du coup tout va bien.
Pour info, voici le bout de code:
<commande> | \
sed 's/\"/\\\"/g' |\
awk -F "|" '{
if(NF == 5){
desc=$NF
print <commande>"\""desc"\";"
}
}' >> $OutputFile
NB: je n'ai pas mis tout le code, mais le principe y est!
j'utilise la commande sed avant d'utiliser l'awk, et du coup tout va bien.
Pour info, voici le bout de code:
<commande> | \
sed 's/\"/\\\"/g' |\
awk -F "|" '{
if(NF == 5){
desc=$NF
print <commande>"\""desc"\";"
}
}' >> $OutputFile
NB: je n'ai pas mis tout le code, mais le principe y est!
Bonjour
Merci pour ta réponse
Je me suis mal exprimée:
la chaine de départ est: desc: toto"titi"tata"
d'ailleurs si je fais un print de desc (desc="toto\"titi\"tata\""), j'ai: toto"titi"tata"
Donc la chaine de départ est: toto"titi"tata"
Et je souhaiterai obtenir: toto\"titi\"tata\"
Merci pour ta réponse
Je me suis mal exprimée:
la chaine de départ est: desc: toto"titi"tata"
d'ailleurs si je fais un print de desc (desc="toto\"titi\"tata\""), j'ai: toto"titi"tata"
Donc la chaine de départ est: toto"titi"tata"
Et je souhaiterai obtenir: toto\"titi\"tata\"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question