Expresiones regulares: [a]bc vs abc

No soy un experto en expresiones regulares, pero pensé que entendía los conceptos básicos. estaba leyendo un tutoriales que se menciona usando esta sintaxis:

$ ps -ewwo pid,args | grep [s]sh

para determinar si SSHD se está ejecutando o no.

No entiendo por qué la primera s está entre paréntesis. pensaría que ssh y [s]sh daría los mismos resultados, pero en realidad obtengo resultados diferentes.

$ ps -ewwo pid,args | grep [s]sh
 1258 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session gnome-session --session=ubuntu
 2988 /usr/sbin/sshd -D

$ ps -ewwo pid,args | grep ssh
 1258 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session gnome-session --session=ubuntu
 2988 /usr/sbin/sshd -D
 3082 grep --color=auto ssh

Entonces, ¿por qué encuentra el tercer resultado en el segundo ejemplo?

¡Gracias!

preguntado el 04 de julio de 12 a las 06:07

En tu primer grep pones ss[h] - que no concuerda con el resto de tu comentario.? -

@Zac gracias, eso fue un error tipográfico. Lo siento, arreglado. -

¿Sería esto una mejor opción para el sitio unix? -

Puede ser, ahora que entiendo que mi problema no era en realidad la comprensión de expresiones regulares. De cualquier manera, gracias por tu ayuda. -

3 Respuestas

Las expresiones regulares [a]bc y abc coinciden exactamente con el mismo conjunto de cadenas, pero se aplican a datos diferentes, porque los argumentos de la línea de comandos para grep aparecer en la salida del ps mando.

Usar [a]bc hace que la cadena literal "[a]bc" para aparecer en la salida de ps, y esto no coincide con la expresión regular [a]bc.

La idea es evitar hacer coincidir la línea para el grep ordenarse a sí mismo.

Respondido 04 Jul 12, 07:07

escribes más rápido que yo. :-)- Zac

Los paréntesis son un clase de personaje pero realmente no tiene sentido tener una clase de carácter con un carácter y sin repetición especificada.

La razón por la que obtiene resultados diferentes es porque ssh coincide con los argumentos grep en la lista de procesos, pero [s]sh no se empareja a sí mismo.

Respondido 04 Jul 12, 07:07

cuando tu pipa ps dentro grep, a menudo encontrará el funcionamiento grep porque el término existe en el nombre del programa y es probable que coincida.

Respondido 04 Jul 12, 07:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.