Bash ne garder que les valeurs numériques

Fermé
Paullux_1er Messages postés 122 Date d'inscription vendredi 10 février 2017 Statut Membre Dernière intervention 28 janvier 2020 - 29 août 2018 à 16:04
 Thomas10_10 - 18 nov. 2018 à 20:33
Bonjour,

Je veux supprimer d'un fichier csv (avec ; comme séparateur) les valeurs non numériques.
J'ai donc voulu utiliser sed :
sed -i 's/[^[:digit:]]/;/g' temp2.csv

Mais cela supprime les retours à la ligne.

Je conserve les valeurs numériques et les points-virgules, mais pas les retours à la ligne.

Comment faire pour que ça marche correctement ?

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
29 août 2018 à 17:31
Salut,

Normalement sed ne modifie qu'une ligne à fois sans toucher au fin de ligne.
Ta syntaxe ne devrait normalement pas y toucher non plus, à moins que le format de ton fichier d'entrée ne soit pas conforme ;-\

Peut-on avoir un bout de ton fichier "csv" via la commande
cat -A ton_fichier.csv | tail -5
?

0
Paullux_1er Messages postés 122 Date d'inscription vendredi 10 février 2017 Statut Membre Dernière intervention 28 janvier 2020 1
29 août 2018 à 17:32
c'est que cela décomposait les dates cela a donc décalé les infos que je chercher à traiter.
0
Utilisateur anonyme
29 août 2018 à 19:52
sed
ne modifie qu'une ligne à fois sans toucher aux fins de lignes.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > Utilisateur anonyme
29 août 2018 à 19:59
Mea coulpa ;-((
Quoi que… il n'y a qu'une fin par ligne ;-))
0
Utilisateur anonyme > zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021
29 août 2018 à 21:22
salut zipe,

je ne soulignais pas pour toi; je ne comprends pas, moi non plus, comment cette commande pourrait LES ;) altérer.
0
Thomas10_10
18 nov. 2018 à 20:33
et avec sed "s/[a-zA-Z]//g" nom_de_fichier ?
0