Il modo più veloce per filtrare una stringa

1

Sto lavorando su uno script che legge l'intestazione di alcuni file (immagini mediche), filtra i dati e quindi crea una directory di file basata su quei dati. Ma ci sono milioni di immagini e ho bisogno di renderlo più veloce in un compito. Dopo aver letto l'immagine, lo script crea un blocco di informazioni che ho bisogno di filtrare, scambiare le lettere accentate da lettere normali, scambiare qualsiasi spazio per una sottolineatura e quindi eliminare qualsiasi carattere diverso da " AZ, AZ, 0- 9, _) (] [- ". Al momento utilizzo i comandi SED e Tr come mostrato di seguito, Esiste un modo più veloce per farlo? TIA

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

1 risposta

3

Questo non affronta la parte "più veloce" della domanda: più di una revisione del codice

  1. assicurati di citare le tue variabili: echo "$BLOCK"
  2. "cancella qualsiasi carattere diverso da" AZ, AZ, 0-9, _) (] [- "- >

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

    dove -d significa "cancella" e -c significa "complemento del set dato". [:alnum:] è una classe di caratteri che corrisponde a lettere e numeri.

risposta data 11.06.2018 - 19:44
fonte

Leggi altre domande sui tag