bash - quot - linux shell test
Cómo hacer coincidir una sola cita en sed (2)
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 personajes Unicode. REVERSE SOLIDUS es más comúnmente conocido como backslash.
En este último caso, cierra el apóstrofo, luego cita el apóstrofo con una barra diagonal inversa, luego abre otro apóstrofo para el resto del texto.
Cómo hacer coincidir una comilla simple en sed si la expresión está entre comillas simples:
sed -e ''...''
Por ejemplo, necesito hacer coincidir este texto:
''foo''
Como se señaló en los comentarios a la pregunta, no se trata realmente de sed, sino de cómo incluir una cita en una cadena entre comillas (por ejemplo, bash).
Para aclarar una respuesta anterior, debe evitar la cita con una barra invertida, pero no puede hacer eso dentro de una expresión entre comillas simples. Desde la página del hombre bash:
El incluir caracteres en comillas simples conserva el valor literal de cada carácter dentro de las comillas. Es posible que una comilla simple no se produzca entre comillas simples, incluso cuando esté precedida por una barra diagonal inversa.
Por lo tanto, debe finalizar la expresión entrecomillada, insertar la comilla escapada y comenzar una nueva expresión entrecomillada. La eliminación de comillas del shell no agrega ningún espacio adicional, por lo que en efecto se obtiene la concatenación de cadenas.
Por lo tanto, para responder a la pregunta original de cómo citar solo 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 a comillas dobles si es posible:
sed -e "...''foo''..."
[Como ejemplo de la potencial pesadilla de mantenimiento del primer enfoque (comilla simple), observe cómo el resaltado de sintaxis de da color a las comillas, barras diagonales inversas y otro texto; definitivamente no es correcto.]