grep
La idea de un personaje depende de la localidad . Si está en una configuración regional que no es Unicode y selecciona un archivo con caracteres Unicode, entonces el recuento de caracteres no coincidirá. Si lo echo $LANG
haces, verás la ubicación en la que te encuentras.
Si establece las LC_CTYPE
y / o LANG
variables de entorno a un valor que termina con" .UTF-8" por lo que recibirá el comportamiento correcto:
$ cat data
étuis
letter
éééééé
$ LANG=C grep -E '^.{6}$' data
étuis
letter
$ LANG=en_US.UTF_8 grep -E '^.{6}$' data
letter
éééééé
$
Puede cambiar su configuración regional para un solo comando asignando la variable en la misma línea que el comando.
Con esta configuración, los caracteres de varios bytes se consideran caracteres únicos. Si desea excluir por completo los caracteres que no son ASCII, algunas de las otras respuestas tienen soluciones para usted.
Tenga en cuenta que todavía es posible que las cosas se rompan, o al menos no hagan exactamente lo que espera, en presencia de caracteres combinados . Su grep
puede tratar Letra latina minúscula E + COMBINACIÓN DE CARACTER AGUDO POR ENCIMA diferente que E Letra latina minúscula con acento agudo.
.
, algo asíwăsd's
coincidirá