|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Inscription : janvier 2012 Messages : 12 ![]() |
Bonjour à tous et à toutes
Je voudrais avoir un petit script qui permet de me lire un fichier "csv" (plusieurs lignes et colonnes séparées par des ';') puis remplacer les valeurs (nombres) d'une colonne (connue) par des mots (je ne peux pas l'appliquer à toutes les colonnes séparément car il y a des colonnes qui contiennent des valeurs identiques), puis de supprimer les lignes qui restent (celles qui n'ont pas de colonnes qui ont étaient remplacées)..... Merci de me répondre vite. |
|
|
01
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 538 ![]() |
1;2;3;4;1;2;3;4 => 1;2;a;4;1;2;3;4 ????
|
|
|
00
|
|
|
#3 |
|
Inscription : janvier 2012 Messages : 12 ![]() |
Merci de votre réponse. Je vous explique un peu. Moi j'ai le couple (a=1) que j'applique sur l'exemple suivant
1;2;3;4;5;6 a;2;3;4;5;6 2;2;3;4;7;6 ==> a;2;3;4;7;6 1;4;5;7;8;9 sinon je supprime la ligne et j'élimine le vide |
|
|
01
|
|
|
#4 |
|
Inscription : janvier 2012 Messages : 12 ![]() |
Quelqu'un pour m'aider ?
|
|
|
01
|
|
|
#5 |
|
Membre confirmé
![]() Développeur informatique Inscription : octobre 2006 Messages : 181 ![]() |
Ce n'est pas tres clair pour moi,
Peux tu donner 4-5 lignes d'un fichier avec a coté le resultat de l'action souhaitée ( pas de changement, tel changement, ligne supprimée car ... ) ? |
|
|
10
|
|
|
#6 |
|
Membre actif
![]() Apprenti/ Dev C++ Inscription : décembre 2009 Messages : 105 ![]() |
Désolée mais je ne comprend pas vraiment ta question . Si tu cherche à remplacer des caractères dans un fichier tu peux utiliser sed (je te conseille de lire la doc parce que la syntaxe est un petit peu compliquée) ou si sed ne fonctionne pas awk , qui est l'outil de lecture/ecriture dans un fichier.
|
|
|
00
|
|
|
#7 |
|
Inscription : janvier 2012 Messages : 12 ![]() |
OK merci, c'est ce que j'ai trouvé aussi sur le net, il faut utiliser awk apparemment
|
|
|
01
|
|
|
#8 |
|
Inscription : janvier 2012 Messages : 12 ![]() |
INPUT:
1;2;3;4;5;6 2;2;3;4;7;6 1;4;5;7;8;9 traitement1: remplacer '1' par 'a' a;2;3;4;5;6 (ligne vide (supprimée) car le '2' n'a pas de signification) a;2;3;4;7;6 traitement2= OUTPUT: éliminer les lignes vides a;2;3;4;5;6 a;2;3;4;7;6 |
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 538 ![]() |
Code :
la premiere commande /1/!d = si on trouve 1 sur la ligne on efface pas la dexième command s/1/a/ = substituer 1 par a (sans conditions) le ";" sépare les deux sous-commandes. |
||
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Salut,
J'aurai plutôt dit le contraire, si on ne trouve pas "1" (la négation étant exprimée par le "!") sur la ligne on efface (avec la commande "d" (delete)) Perso j'aurai plus vu : -n Impression sur la sortie standard sur demande (voir le flag "p" plus loin) /^1\b/ Si la ligne commence (^) par "1", sans aucun caractères alphanumériques derrière (\b exprime une limite de mot). { Regroupement de commandes à appliquer s//a/p On substitue la valeur du motif déjà cité (autrement dit le "1") par un "a", et on imprime sur la sortie standard avec le flag "p". } Fin du regroupement de commandes
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
|
|
20
|
|
|
#11 | |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 538 ![]() |
Citation:
|
|
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() Développeur informatique Inscription : octobre 2006 Messages : 181 ![]() |
Code :
echo "a;1;2;3;4" |awk -F";" 'BEGIN{ OFS=";" } $1 == "a" { $1 = "toto" ; print }' |
|
|
10
|
|
|
#13 |
|
Inscription : janvier 2012 Messages : 12 ![]() |
Merci pour vos réponses, j'y suis arrivé
Maintenant je veux savoir s'il y a un moyen de convertir le fichier résultant en décimal, je vous explique...j'ai de grand nombre en sortie dans mon fichier alors il me les affiche du genre 2,14E+11 y a t il un moyen de le convertir en décimal enfin il l'est déjà c à d l'afficher sur plusieurs positions 214 000 000 000 ???????? |
|
|
00
|
|
|
#14 | ||
|
Inscription : janvier 2012 Messages : 12 ![]() |
Merci de me répondre SVP.
j'ai aussi une autre question dans le même contexte: Je voudrais supprimer des lignes selon la valeur de la première colonne, par exemple: Code :
14/01/2012;a;b;c;d 15/01/2012;a;b;c;d 16/01/2012;a;b;c;d 17/01/2012;a;b;c;d 18/01/2012;a;b;c;d 19/01/2012;a;b;c;d 20//01/2012;a;b;c;d 15/01/2012;a;b;c;d 16/01/2012;a;b;c;d 17/01/2012;a;b;c;d 18/01/2012;a;b;c;d |
||
|
|
00
|
|
|
#15 | ||
|
Expert Confirmé
![]() Inscription : janvier 2011 Messages : 970 ![]() |
Re-
Code :
__________________
$ man woman Il n'y a pas de page de manuel pour woman. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com