web-dev-qa-db-fra.com

Comment remplacer des guillemets simples par un autre caractère dans sed?

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 

  • toutes les occurrences de hari's à hari s
  • toutes les occurrences de 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.

19
Srihari

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
42
Antarus

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

20
n3rV3

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
11
perreal

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
1
Dedy K Wijaya

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

0
Jonni2016aa