wake-up-neo.net

Wie ersetze ich einzelne Anführungszeichen durch einen anderen Charakter in sed?

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. 

  • alle Vorkommen von hari's bis hari s
  • alle Vorkommen von 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.

19
Srihari

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

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

20
n3rV3

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

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

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

0
Jonni2016aa