Ho un file con un nome come "Today's Date.txt"
Quello che mi interessa è rimuovere tutti i caratteri speciali usando il terminale come:
" - , ' ' [
La ragione di ciò è dovuta al fatto che li inserisco in uno script in un secondo momento ed è troppo mal di testa che tiene conto e modifica i nomi individualmente.
Spaces "" e Underscores "_" e l'alfabeto "A-Z, a-z" sono ok e sostituiscono i caratteri piuttosto che cancellarli.
All'inizio pensavo che il comando terminale "iconv" potesse aiutarmi convertendo in una codifica più semplice, ma ho provato molte delle codifiche e sembra che potrei sbagliarmi.
So che le espressioni regolari potrebbero aiutarmi, ma purtroppo non sono esperto in loro. Ho trovato questa domanda che sembra realizzata, ma non so come implementarla o se copre gli stessi casi dei miei.
Il motivo per cui ho postato questo è perché questa domanda potrebbe essere unica per il set di caratteri Supporti OSX per i nomi di file e la codifica che usa ... anche se è più probabile che non abbia idea di cosa sto parlando.
Grazie per il tuo aiuto in anticipo.
Modifica: il comando
sed 's/[!@#\$%^&*()]//g'
Sembra funzionare molto bene ma non riesco a farlo funzionare per il mio caso di utilizzo originale e altri:
' ' "
Non riescono nemmeno a sfuggirle. Sono molto nuovo nello script di bash quindi ti prego di sopportare me.
Modifica 2: postando questo qui altrimenti dovrei aspettare 6 ore.
Oltre alla risposta di Alan Shutko, vorrei aggiungere la mia soluzione che ho trovato.
awk '{gsub(/[[:punct:]]/,"")}1'
Sono un po 'titubante a postare questo dato che non riesco a spiegarlo bene.
Awk, come dice la pagina man, è usato per "linguaggio di scansione ed elaborazione basato su pattern". La funzione gsub cerca e sostituisce tutte le occorrenze dell'espressione regolare immessa. La parte di gsub sarebbe simile a questa:
gsub("a","b")
Dove nel mio esempio, tutte le occorrenze di a sarebbero sostituite da b. Come nel commento sopra [[: punct:]] suona come se fosse l'acronimo di tutti i segni di punteggiatura. Tuttavia, non so cosa significhi l'1 all'esterno delle parentesi.