Ich habe eine flache Datei mit mehreren Vorkommen von Zeichenfolgen, die ein einfaches Anführungszeichen enthält, z. hari's
und leader's
.
Ich möchte alle Vorkommen des einfachen Anführungszeichens durch Leerzeichen ersetzen, d. H.
hari's
bis hari s
leader's
bis leader s
Ich habe es versucht
sed -e 's/"'"/ /g' myfile.txt
und
sed -e 's/"'"/" "/g' myfile.txt
aber sie geben mir nicht das erwartete Ergebnis.
Versuchen Sie, sed-Befehle so einfach wie möglich zu halten, sonst werden Sie verwirrt, was Sie geschrieben haben, nachdem Sie es später gelesen haben.
#!/bin/bash
sed "s/'/ /g" myfile.txt
Dies wird tun, was Sie wollen
echo "hari's"| sed 's/\x27/ /g'
Einzelne Anführungszeichen in Ihrer Datei/Ihrem Text werden ersetzt. Selbst wenn sie für Notierungen verwendet werden, werden sie durch Leerzeichen ersetzt. In diesem Fall (entfernen Sie die Anführungszeichen innerhalb eines Words nicht an der Word-Grenze) können Sie Folgendes verwenden:
echo "hari's"| sed -re 's/(\<.+)\x27(.+\>)/\1 \2/g'
HTH
Hinterlassen Sie einfach das einfache Anführungszeichen und geben Sie ein getrenntes Anführungszeichen ein:
sed 's/'\''/ /g' input
auch mit einer Variable möglich:
quote=\'
sed "s/$quote/ /g" input
Hier basiert auf meinen eigenen Erfahrungen.
Bitte beachten Sie, wie ich spezielle Zeichen '
vs "
nach sed
Das geht nicht (keine Ausgabe)
2521 #> echo 1'2'3'4'5 | sed 's/'/ /g'
>
>
>
aber das würde reichen
2520 #> echo 1'2'3'4'5 | sed "s/'/ /g"
12345
Das -i sollte es in der Datei .__ ersetzen. sed -i 's/“/"/g' Dateiname.txt
wenn Sie Sicherungen wünschen, können Sie sed -i.bak's/"/"/g "Dateiname.txt