J'ai un fichier dont le nom est "Date du jour.txt".
Ce qui m'intéresse, c'est de supprimer tous les caractères spéciaux en utilisant le terminal, par exemple :
" - , ' ' [
La raison en est que je les insère dans un script plus tard et c'est un trop gros casse-tête de comptabiliser et de changer les noms individuellement.
Les espaces " " et les underscores "_" et l'alphabet "A-Z, a-z" sont acceptés, de même que le remplacement des caractères plutôt que leur effacement.
J'ai d'abord pensé que la commande "iconv" du terminal pourrait m'aider en convertissant vers un encodage plus simple, mais j'ai essayé plusieurs des encodages et il semble que je me sois trompé.
Je sais que les expressions régulières pourraient m'aider, mais malheureusement, je n'y connais pas grand-chose. J'ai trouvé ce Une question qui semble pertinente, mais je ne sais pas comment la mettre en œuvre ou si elle couvre les mêmes cas que les miens.
La raison pour laquelle j'ai posté cette question ici est qu'elle pourrait être propre au jeu de caractères qu'OSX prend en charge pour les noms de fichiers et à l'encodage qu'il utilise... bien qu'il soit plus probable que je n'ai aucune idée de ce dont je parle.
Merci d'avance pour votre aide.
Edit : La commande
sed 's/[!@#\$%^&*()]//g'
Il semble fonctionner très bien mais je n'arrive pas à le faire fonctionner pour mon cas d'utilisation original et d'autres :
' ` "
Leur échapper ne marche pas non plus. Je suis très novice en matière de scripting bash, alors soyez indulgent avec moi.
Edit 2 : Je le poste ici, sinon je devrais attendre 6 heures.
En plus de la réponse d'Alan Shutko, je voudrais ajouter ma propre solution que j'ai trouvée.
awk '{gsub(/[[:punct:]]/,"")}1'
J'hésite un peu à poster ceci car je ne peux pas bien l'expliquer.
Awk, comme l'indique sa page de manuel, est utilisé comme "langage d'analyse et de traitement orienté motif". La fonction gsub recherche et remplace toutes les occurrences de l'expression régulière que vous avez saisie. La partie gsub ressemblerait à ceci :
gsub("a","b")
Dans mon exemple, toutes les occurrences de a seraient remplacées par b. Comme dans le commentaire ci-dessus, [[:punct :]] semble correspondre à tous les signes de ponctuation. Cependant, je ne sais pas ce que représente le 1 à l'extérieur des parenthèses.