GNU/Linux >> Tutoriales Linux >  >> Linux

Eliminar todos los caracteres especiales y mayúsculas y minúsculas de la cadena en bash

cat yourfile.txt | tr -dc '[:alnum:]\n\r' | tr '[:upper:]' '[:lower:]'

El primer tr elimina caracteres especiales. d significa borrar, c significa complemento (invertir el conjunto de caracteres). Entonces, -dc significa eliminar todos los caracteres excepto los especificados. El \n y \r se incluyen para preservar las líneas nuevas de estilo de Linux o Windows, que supongo que desea.

El segundo traduce los caracteres de mayúsculas a minúsculas.


Solución BASH 4+ pura:

$ filename='Some_randoM data1-A'
$ f=${filename//[^[:alnum:]]/}
$ echo "$f"
SomerandoMdata1A
$ echo "${f,,}"
somerandomdata1a

Una función para esto:

clean() {
    local a=${1//[^[:alnum:]]/}
    echo "${a,,}"
}

Pruébalo:

$ clean "More Data0"
moredata0

si está utilizando mkelement0 y el enfoque de Dan Bliss. También puede consultar la expresión regular sed + POSIX.

cat yourfile.txt | sed 's/[^a-zA-Z0-9]//g'

Sed coincide con todos los demás caracteres que no están entre corchetes, excepto letras y números, y los elimina.


He usado tr para eliminar cualquier carácter que no sea parte de [:print:] clase

cat file.txt | tr -dc '[:print:]'

o

echo "..." | tr -dc '[:print:]'

Además, es posible que desee | (tubería) la salida a od -c para confirmar el resultado

cat file.txt | tr -dc '[:print:]' | od -c

Linux
  1. Bash Script para eliminar el archivo más antiguo de una carpeta?

  2. Cómo eliminar todos los directorios .svn de los directorios de mi aplicación

  3. linux bash, cadena camel case para separar por guión

  4. Pruebe si la cadena tiene caracteres que no son espacios en blanco en Bash

  5. ¿Cómo grep una cadena en un directorio y todos sus subdirectorios?

Sintaxis y ejemplos de declaraciones de caso Bash

Cómo quitar (^M) caracteres de un archivo en Linux

Cómo quitar todos los caracteres de espacio en blanco de un archivo de texto

Exportar una variable desde bash y usarla en Python

Eliminar una determinada línea del archivo de historial de Bash

¿Cómo cambiar el nombre de todos los archivos con caracteres especiales y espacios en un directorio?