Necesito escribir un script de shell para convertir caracteres en un archivo a minúsculas y reemplazar caracteres no alfabéticos a _
.
Tengo un comando separado para los dos anteriores. Cómo dar un archivo como argumento y hacer las cosas anteriores, es decir, la salida tendrá solo caracteres en minúsculas y no alfa se reemplazará con _
(guión bajo)?
Respuesta aceptada:
Usando sed
:
sed 's/[^[:alpha:]]/_/g; s/[[:upper:]]/\L&/g' file.txt
Esto es en realidad dos sed
comandos separados por ;
:
-
s/[^[:alpha:]]/_/g
transforma cada carácter no alfabético en un_
-
s/[[:upper:]]/\L&/g
convierte todos los caracteres en mayúsculas a minúsculas
Ejemplo:
$ cat file.txt
fooBAr132323
SpamEgg
$ sed 's/[^[:alpha:]]/_/g; s/[[:upper:]]/\L&/g' file.txt
foobar______
spamegg