Pregunta

Cómo hacer coincidir una comilla simple en sed si la expresión está entre comillas simples:

sed -e '...'

Por ejemplo, debe coincidir con este texto:

'foo'
¿Fue útil?

Solución

Puedes usar:

"texta'textb" (APOSTROPHE inside QUOTATION MARKs)

o

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

Usé nombres de caracteres Unicode.REVERSE SOLIDUS se conoce más comúnmente como barra invertida.

En el último caso, cierra el apóstrofe, luego cita el apóstrofe con una barra invertida y luego abre otro apóstrofe para el resto del texto.

Otros consejos

Como se señaló en los comentarios a la pregunta, en realidad no se trata de sed, sino de cómo incluir una comilla en una cadena entrecomillada en un Shell (por ejemplo,intento).

Para aclarar una respuesta anterior, debe evitar la comilla con una barra invertida, pero no puede hacerlo dentro de una expresión entre comillas simples.Desde la página de manual de bash:

Encerrar personajes en citas individuales conserva el valor literal de cada personaje dentro de las citas.Es posible que no se produzca una sola cita entre citas individuales, incluso cuando se precede por una barra de de fondo.

Por lo tanto, debe terminar la expresión entrecomillada, insertar la comilla de escape y comenzar una nueva expresión entrecomillada.La eliminación de comillas del shell no agrega espacios adicionales, por lo que, de hecho, obtienes una concatenación de cadenas.

Entonces, para responder la pregunta original de cómo poner entre comillas simples la expresión 'foo', harías algo como esto:

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

(donde '...' es el resto de la expresión sed).

En general, en aras de la legibilidad, sería mucho mejor cambiar las comillas circundantes por comillas dobles, si es posible:

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

[Como ejemplo de la posible pesadilla de mantenimiento del primer enfoque (comilla simple), observe cómo el resaltado de sintaxis de StackOverflow colorea las comillas, las barras invertidas y otro texto; definitivamente no es correcto.]

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top