Frage

Wie man einen Apostroph in sed anzupassen, wenn der Ausdruck in einfachen Anführungszeichen eingeschlossen ist:

sed -e '...'

Zum Beispiel müssen Sie diesen Text entsprechen:

'foo'
War es hilfreich?

Lösung

Sie können entweder:

"texta'textb" (APOSTROPHE inside QUOTATION MARKs)

oder

'texta'\''textb' (APOSTROPHE text APOSTROPHE, then REVERSE SOLIDUS, APOSTROPHE, then APOSTROPHE more text APOSTROPHE)

Ich verwendete Unicode-Zeichennamen. REVERSE SOLIDUS als Backslash häufiger bekannt.

Im letzteren Fall, schließen Sie Ihre Apostroph, dann Shell-Zitat Ihre Apostroph mit einem umgekehrten Schrägstrich, dann einem anderen Apostroph öffnen für den Rest des Textes.

Andere Tipps

Wie in den Kommentaren auf die Frage erwähnt, ist es nicht wirklich über sed, aber wie ein Zitat in einer Zeichenfolge in Anführungszeichen in einer Shell (z.B. bash).

Um eine frühere Antwort zu klären, müssen Sie das Zitat mit einem Backslash entkommen, aber man kann das nicht innerhalb eines einzigen zitierten Ausdrucks. Von der bash man-Seite:

  

Enclosing Zeichen in einfachen Anführungszeichen   bewahrt den wörtlichen Wert jeden   Zeichen in Anführungszeichen. Ein einzelnes   Zitat kann nicht auftreten, zwischen den einzelnen   Zitate, auch wenn sie von einer voran   Backslash.

Sie müssen daher den zitierten Ausdruck beenden, legen Sie die entkam Zitat, und starten Sie einen neuen zitierte Ausdruck. Das Zitat Entfernen des Shell fügt keine zusätzlichen Leerzeichen, so in der Tat Sie String-Verkettung erhalten.

Also, die ursprüngliche Frage zu beantworten, wie der Ausdruck ‚foo‘ Apostroph, würden Sie so etwas tun:

sed -e '...'\''foo'\''...'

(wobei '...' ist der Rest des sed Ausdrucks).

Insgesamt wird aus Gründen der Lesbarkeit, würden Sie viel besser dran Änderung der umgebenden Anführungszeichen doppelte Anführungszeichen, wenn überhaupt möglich:

sed -e "...'foo'..."

[Als Beispiel für den möglichen Wartung Alptraum des ersten (Apostroph) Ansatzes, beachten Sie, wie Stackoverflow Syntax Farben, die Anführungszeichen, Schrägstriche und anderen Text markieren -. Es ist definitiv nicht richtig]

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top