La forma más rápida de filtrar una cadena

1

Estoy trabajando en un script que lee el encabezado de algunos archivos (imágenes médicas), filtra los datos y luego crea un directorio de archivos basado en esos datos. Pero hay millones de imágenes y necesito hacerlo más rápido en una tarea. Después de leer la imagen, el script crea un bloque de información que necesito filtrar, intercambiar las letras acentuadas por las letras normales, intercambiar cualquier espacio por un subrayado y luego eliminar cualquier carácter que no sea " AZ, AZ, 0- 9, _) (] [- ". En el momento en que uso los comandos SED y Tr, como se muestra a continuación, ¿hay una forma más rápida de hacerlo? TIA

BLOCK=$( command to read the images ) 
FILTER=$( echo $BLOCK | tr 'ÁÉÍÓÚáéíóúçÇ ^\' 'AEIOUaeioucC_:' | sed -e 's/[^A-_a-z0-9() -]//g' )
    
pregunta Vilefort 11.06.2018 - 19:25

1 respuesta

3

Esto no aborda la parte "más rápida" de la pregunta: más de una revisión de código

  1. asegúrese de indicar sus variables: echo "$BLOCK"
  2. "eliminar cualquier carácter que no sea" AZ, AZ, 0-9, _) (] [- "- >

    tr -dc '][:alnum:]_)( [-'
    

    donde -d significa "eliminar" y -c significa "el complemento del conjunto dado". [:alnum:] es una clase de caracteres que hace coincidir letras y números.

respondido por el glenn jackman 11.06.2018 - 19:44

Lea otras preguntas en las etiquetas