Bonjour à tous.tes,
Je travaille sur de gros fichiers textes dans lesquels je souhaite garder certains caractères et en supprimer d'autres.
Les caractères à supprimer ne sont pas connus d'avance mais après une opération de filtrage je les sauvegarde dans une variable.
La variable qui contient les caractères à supprimer est, dans le cas qui m'intéresse, égale à :°,!/.·"«»()[]@…0123456789
Voici le code que j'ai tenté d'utiliser pour supprimer tous ces caractères de mon gros fichier texte mais qui ne marche pas :sed -i 's~^[$variable]~~g' mon_gros_fichier_texte.txt
Est-ce que quelqu'un pourrait m'aider?
Merci d'avance
# En modifiant la position d'un caractère
Posté par MicP . Évalué à 3. Dernière modification le 18 septembre 2017 à 01:55.
On peut aussi faire un peu plus court avec :
# En modifiant la position d'un caractère
Posté par MicP . Évalué à 2.
On peut aussi faire un peu plus court avec :
[^] # Re: En modifiant la position d'un caractère
Posté par PascalP . Évalué à 1.
Merci beaucoup
# C'est un job pour tr
Posté par wismerhill . Évalué à 6.
Ce que tu décrit est plus simple à faire avec tr, il n'a pas d'option -i comme sed, mais c'est facile d'enregistrer dans un fichier temporaire puis faire un mv -f pour écraser le fichier d'origine (c'est ce que fait en pratique sed -i):
tr -d "$variable" < mon_gros_fichier_texte.txt > mon_gros_fichier_texte.txt.tmp && mv -f mon_gros_fichier_texte.txt.tmp mon_gros_fichier_texte.txt
(voir la page de manuel de tr pour les caractères spéciaux et les classes de caractères)
[^] # Re: C'est un job pour tr
Posté par MicP . Évalué à 2. Dernière modification le 19 septembre 2017 à 15:58.
J'ai "plussoyé" la proposition faite par wismerhill
car la commande
tr
est plus appropriée pour remplacer ou supprimer des caractères dans un fichier.De plus, on évite le problème du caractère
]
dans la liste pour la classe de caractères de la regexp poursed
dans laquelle il est impossible de faire autrement que de metttre ce caractère en premier de la liste.
# bbe et sponge
Posté par Space_e_man (site web personnel) . Évalué à 3.
Juste au cas où… Pour d'autres qui tomberaient ici avec leurs recherches sur le web :)
J'avais des choses difficiles à réaliser avec sed à cause de l’échappement, etc. (je sais plus trop…) Toujours est-il que j'ai été amené ce jour là à utiliser une autre commande !
(↑ Il y avait un mélange de toutes sortes de retours à la ligne dans des fichiers textes…, hum…)
apt install bbe
↓
bbe : binary block editor
apt install moreutils
↓
sponge : soak up standard input and write to a file
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.