Se olvida de escapar de la metacaracteres
grep -e '"[a-z]\+"'
Para la segunda parte, la razón por la que se está combinando caracteres de varias cajas se debe a su configuración regional. En la siguiente manera:
$ echo '"Abc"' | grep -e '"[a-z]\+"'
"Abc"
$ export LC_ALL=C
$ echo '"Abc"' | grep -e '"[a-z]\+"'
$
para obtener el comportamiento "ascii-like", es necesario establecer la configuración regional de "C", tal como se especifica en la página man grep:
Dentro de una expresión entre corchetes, una expresión de rango consta de dos caracteres separados por un guión. Coincide con cualquier carácter único que ordene entre los dos caracteres, inclusive, utilizando la secuencia de clasificación y el juego de caracteres de la configuración regional. Por ejemplo, en la configuración regional C predeterminada , [a-d] es equivalente a [abcd]. Muchos entornos locales ordenan los caracteres en el orden de los diccionarios, y en estas configuraciones regionales [a-d] es que generalmente no es equivalente a [abcd]; podría ser equivalente a [aBbCcDd], por ejemplo. Para obtener la interpretación tradicional de expresiones con corchetes, puede utilizar la configuración regional C estableciendo la variable de entorno LC_ALL al valor C.
Su segunda expresión regular se ve bien. Lo intenté y no coincide con los caracteres en mayúscula. – Misha
@Mike está olvidando el orden de clasificación específico de la configuración regional. –
@Don ¡Gracias, ni siquiera pensé en eso! – Misha