Estoy tratando de hacer coincidir una cadena:
* * * * * /usr/local/bin/growlnotify -t 'helloTitle' -m 'helloMessage' -n 'myApp' -sw
con:
crontab -l | grep '^[^#].*/usr/local/bin/growlnotify.*\-n \'myApp\'.*$'
No funciona: nada coincide.
Pero:
crontab -l | grep '^[^#].*/usr/local/bin/growlnotify.*\-n.*$'
funciona muy bien:
* * * * * /usr/local/bin/growlnotify -t 'helloTitle' -m 'helloMessage' -n 'myApp' -sw
¿Cuál es el problema con \'myApp\'
?
¿Cómo escapar de una cita simple en grep / sed?
Respuestas:
uno puede escapar de comillas simples con
-e
opción y usando representación hexadecimal :o en grep usando la representación hexadecimal y la
-P
opción:ss64 como referencia:
fuente
'
encierran la expresión con comillas dobles"
(2 caracteres modificados) y eliminando las barras invertidas\
(3 caracteres eliminados). Prueba de copiar / pegarecho "* * * * * /usr/local/bin/growlnotify -t 'helloTitle' -m 'helloMessage' -n 'myApp' -sw" | grep "^[^#].*/usr/local/bin/growlnotify.*-n 'myApp'.*$"
Lamento decirlo, pero no puede escapar de comillas simples dentro de comillas simples. Tendrás que usar comillas dobles. Puedes demostrártelo haciendo:
Su caparazón esperará otra cotización.
fuente