11 Stimmen

Wie würde ich ein einfaches Anführungszeichen (') durch einen umgekehrten Schrägstrich und ein einfaches Anführungszeichen (\') mit sed ersetzen?

Wie würde ich ein einfaches Anführungszeichen (') durch einen umgekehrten Schrägstrich und ein einfaches Anführungszeichen (\') mit sed ersetzen?

sed s/\'/\\\'/

wird nicht funktionieren, weil man nie die wörtliche Übersetzung schreiben kann.

sed ":a;N;s/\'/\\'/g" <file1 >file2

wird nicht funktionieren, weil der Backslash das Anführungszeichen nicht mehr entschlüsselt, sondern wie ein Regex-Anführungszeichen behandelt wird.

11voto

meouw Punkte 40856

Zitieren Sie einfach den Ersatz

$ echo \' | sed s/\'/"\\\'"/
$ \'

z.B.

$ cat text1
this is a string, it has quotes, that's its quality
$ sed s/\'/"\\\'"/ text1 > text2
$ cat text2
this is a string, it has quotes, that\'s its quality

4voto

Robin Punkte 7465

Versuchen Sie das Folgende:

sed -e s/\'/\\\\\'/g input > output

Um zu beweisen, dass dies funktioniert:

echo "Hello 'World'" | sed -e s/\'/\\\\\'/g

Die Ausgabe sollte sein:

Hello \'World\'

0voto

Jay Punkte 435

Wie wäre es mit: sed "s,',BBBB',g" Datei wobei B ein Backslash ist ... das sind 4 Backslashes ...

0voto

Casey Robinson Punkte 1021

Verwenden Sie die Option -e.

sed -e s/\'/ \\ '/g Datei2

-1voto

potong Punkte 51035

Das scheint zu funktionieren:

<<<"''''" sed 's/'\''/\\&/;s/\('"'"'\)\(..\)$/\\\1\2/;'s/\'\'$/\\\\\'\'/";s/'$/\\\'/"
\'\'\'\'

Hier werden 4 verschiedene Möglichkeiten gezeigt, wie ein einzelnes Anführungszeichen durch einen umgekehrten Schrägstrich, gefolgt von einem einzelnen Anführungszeichen, mit sed ersetzt werden kann.

  1. <<<\' sed 's/'\''/\\&/'
  2. <<<\' sed 's/\('"'"'\)/\\\1/'
  3. <<<\' sed s/\'/\\\\\'/
  4. <<<\' sed "s/'/\\\'/"

Wenn man sie zusammenfügt, um vier einfache Anführungszeichen zu ersetzen, erzielen die obigen Regexps das gewünschte Ergebnis.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X