GNU/Linux >> Linux Esercitazione >  >> Linux

Rimuovi tutti i caratteri speciali e le maiuscole dalla stringa in bash

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

Il primo tr cancella i caratteri speciali. d significa eliminare, c significa complemento (inverte il set di caratteri). Quindi, -dc significa eliminare tutti i caratteri tranne quelli specificati. Il \n e \r sono inclusi per preservare le nuove righe in stile Linux o Windows, che presumo tu voglia.

Il secondo traduce i caratteri maiuscoli in minuscoli.


Soluzione BASH 4+ pura:

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

Una funzione per questo:

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

Provalo:

$ clean "More Data0"
moredata0

se stai usando l'approccio mkelement0 e Dan Bliss. Puoi anche esaminare l'espressione regolare sed + POSIX.

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

Sed trova tutti gli altri caratteri che non sono contenuti tra parentesi eccetto lettere e numeri e li rimuove.


Ho usato tr per rimuovere tutti i caratteri che non fanno parte di [:print:] classe

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

o

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

Inoltre potresti voler | (convoglia) l'output in od -c per confermare il risultato

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

Linux
  1. Sed rimuove i caratteri dalla nuova riga?

  2. Stampare una stringa con virgolette singole e altri caratteri speciali?

  3. Escape caratteri sconosciuti dalla stringa per -exec?

  4. Come rimuovere tutte le directory .svn dalle directory delle mie applicazioni

  5. linux bash, stringa camel case da separare con un trattino

Sintassi ed esempi dell'istruzione Bash case

Come rimuovere (^M) caratteri da un file in Linux

Come rimuovere tutti i caratteri di spazio bianco da un file di testo

Rimuovi una determinata riga dal file della cronologia di Bash

Come rimuovere i caratteri finali nei nomi di file in Bash?

Come rinominare tutti i file con caratteri speciali e spazi in una directory?