J'ai un fichier plat dans lequel j'ai plusieurs occurrences de chaînes contenant un guillemet simple, par exemple. hari's
et leader's
.
Je souhaite remplacer toutes les occurrences de la citation simple par un espace, c'est-à-dire
hari's
à hari s
leader's
à leader s
J'ai essayé
sed -e 's/"'"/ /g' myfile.txt
et
sed -e 's/"'"/" "/g' myfile.txt
mais ils ne me donnent pas le résultat attendu.
Essayez de garder les commandes sed aussi simples que possible, sinon vous aurez du mal à comprendre ce que vous avez écrit plus tard.
#!/bin/bash
sed "s/'/ /g" myfile.txt
Cela fera ce que vous voulez
echo "hari's"| sed 's/\x27/ /g'
Il remplacera les guillemets simples présents n'importe où dans votre fichier/texte. Même s'ils sont utilisés pour les citations, ils seront remplacés par des espaces. Dans ce cas (supprimez les guillemets dans un mot différent de sa limite), vous pouvez utiliser les éléments suivants:
echo "hari's"| sed -re 's/(\<.+)\x27(.+\>)/\1 \2/g'
HTH
Il suffit d'aller laisser la citation simple et mettre une citation simple évadée:
sed 's/'\''/ /g' input
également possible avec une variable:
quote=\'
sed "s/$quote/ /g" input
Ici est basé sur ma propre expérience.
Veuillez noter comment j'utilise les caractères spéciaux '
contre "
après sed
Cela ne fera pas (pas de sortie)
2521 #> echo 1'2'3'4'5 | sed 's/'/ /g'
>
>
>
mais cela ferait
2520 #> echo 1'2'3'4'5 | sed "s/'/ /g"
12345
Le -i devrait le remplacer dans le fichier sed -i 's/“/"/g' nomfichier.txt
si vous voulez des sauvegardes, vous pouvez le faire sed -i.bak '/ "/"/g' nomfichier.txt