
ssh1% cat temp
sarah
saab
marrrrrrrrra
marrrrrrrtha
ssh1% grep ar*a temp
grep: No match.
¿No debería ser este el resultado?
sarah saab marrrrrra
Intenté usar PuTTY y nxclient para Windows 10.
Respuesta1
Estás usando csh
, que ve el *
e intenta expandirlo como unglobo de conchay falla. Es decir, csh
aquí dice "No hay coincidencia", no grep
. A diferencia deConchas de la familia Bourne, csh
no pasará un patrón global no expandible al comando, por lo que debe citarlo para poder csh
publicarlo en grep
.
Recomiendo comillas simples aquí ya que no estás intentandointerpolaruna variable en la cadena:
% grep 'ar*a' temp
sarah
saab
marrrrrrrrra
Las comillas dobles también funcionarán en este caso porque su patrón no contiene $
, pero recomiendo usar comillas simples aquí de todos modos. Es un hábito que vale la pena cultivar y considerar cuidadosamente qué comillas usa en idiomas que le permiten usarlas de manera semi-indistinta, como Shell, Perl, etc. No necesitamos interpolación de cadenas aquí, por lo que elegiremos no usar el estilo de comillas. que lo permita.
Por cierto, también deberías citar los patrones RE en los shells de la familia Bourne. Como insinúa Mike Wagner en su comentario anterior, porque las expresiones regulares y los patrones globalesutilizar muchos de los mismos caracteres especiales, a veces puedes escribir un patrón RE que simplementesucedetambién coincide con algunos archivos y, por lo tanto, el shell lo expande inesperadamente.