Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/01/2006, à 10:11

Bobbybionic

Manipulation de fichiers texte en console

Bonjour
Alors c'est un peu compliqué donc je vais abréger. Je suis en train de créer un script, mais dans celui-ci j'aimerai pouvoir, et donc à partir de la console :

1- Faire un "rechercher/remplacer"
2- Comparer deux fichiers (extraire les lignes différentes quoi)

Voila merci d'avance.


Non à la vente liée. Non au monopole Windows.
Tous ensemble, refusons les logiciels préinstallés et tournons nous vers le libre.

http://bobbybionic.wordpress.com

Hors ligne

#2 Le 05/01/2006, à 10:46

avelldiroll

Re : Manipulation de fichiers texte en console

Bonjour,

1- sed ou awk
2- diff

et vive le man !


"Les ordinateurs permettent à l'humanité de faire des erreurs le plus rapidement du monde, ... à l'exception peut-être de la tequila et des armes à feu."
Merci de lire ceci de temps à autre ...

Hors ligne

#3 Le 05/01/2006, à 11:24

Bobbybionic

Re : Manipulation de fichiers texte en console

Ok merci je regarde ça !
(je suis un amoureux du "man" t'inquiète pas, et je trouve que cette commande n'est pas assez connue des nouveaux...)


Non à la vente liée. Non au monopole Windows.
Tous ensemble, refusons les logiciels préinstallés et tournons nous vers le libre.

http://bobbybionic.wordpress.com

Hors ligne

#4 Le 05/01/2006, à 11:58

avelldiroll

Re : Manipulation de fichiers texte en console

Sinon, tu peux prendre le temps d'apprendre le perl, après tout il a été créé pour ça à l'origine.
Personnellement, je ne suis pas un grand fan de perl (je préfère le python), mais ça peut rendre pas mal de service tant qu'on a pas à maintenir le code ... (attention ceci n'est pas une tentative de troll / même si ça y ressemble beaucoup).


"Les ordinateurs permettent à l'humanité de faire des erreurs le plus rapidement du monde, ... à l'exception peut-être de la tequila et des armes à feu."
Merci de lire ceci de temps à autre ...

Hors ligne

#5 Le 06/01/2006, à 15:57

Bobbybionic

Re : Manipulation de fichiers texte en console

Bonjour
Je m'adresse à un geek du traitement de fichiers en bash (je laisse le perl pour plus tard :-), je patauge, j'ai des brides d'infos mais sans plus.

Si quelqu'un pouvait sortir de son chapeau (ou d'ou il veut je m'en tape ;-) la commande pour supprimer toutes les occurences de "toto" dans le fichiers "fichier". ça m'aiderait !

Merci d'avance, je me replonge dans les profondeurs de "man" ;-)


Non à la vente liée. Non au monopole Windows.
Tous ensemble, refusons les logiciels préinstallés et tournons nous vers le libre.

http://bobbybionic.wordpress.com

Hors ligne

#6 Le 06/01/2006, à 22:00

avelldiroll

Re : Manipulation de fichiers texte en console

Tu peux essayer ça (pour le fichier pleindetoto.txt) :

awk '{gsub("toto", "", $0); print > FILENAME}' pleindetoto.txt

"Les ordinateurs permettent à l'humanité de faire des erreurs le plus rapidement du monde, ... à l'exception peut-être de la tequila et des armes à feu."
Merci de lire ceci de temps à autre ...

Hors ligne

#7 Le 20/05/2006, à 23:03

lost-in-the-shell

Re : Manipulation de fichiers texte en console

Ben tenez, tant qu'on est dans le bain, est-ce que quelqu'un sait remplacer un caractère par un autre dans une chaîne en C ? (Je suis une quiche avec string.h )

EDIT : laissez tomber, j'ai trouvé en tatonnant avec strchr :

char *lettre = NULL;
lettre = strchr(chaine, '.');
while(lettre != NULL)
{
*lettre = ' ';
lettre = strchr(chaine, '.');
}

En supposant que chaine soit la chaîne à modifier et que le caractère . (point) soit à remplacer par un espace.

Dernière modification par lost-in-the-shell (Le 21/05/2006, à 19:09)


Linux user #401253 - Ubuntu user #3023 .
Nick sur IRC : naji.
Pensez à adhérer au Comité de lutte contre le SMS.

Hors ligne

#8 Le 21/05/2006, à 17:29

cep_

Re : Manipulation de fichiers texte en console

@Bobbybionic :

autre solution cat fichier | sed -e 's/toto/bobbi/ig' >fichier ( ou changer de nom de fichier si nécessaire).

Cordialement.
cep

#9 Le 21/05/2006, à 18:10

cep_

Re : Manipulation de fichiers texte en console

hum, j'avais mal lu et compris que tu voulais remplacer un mot par un autre.
DOnc dans la ligne si un espace supplémentaire n'est pas gênant tu peux remplacer bobbi par un espace.

sed -e 's/fichier//ig'

#10 Le 21/05/2006, à 19:04

jr95

Re : Manipulation de fichiers texte en console

cep_ a écrit :

@Bobbybionic :

autre solution cat fichier | sed -e 's/toto/bobbi/ig' >fichier ( ou changer de nom de fichier si nécessaire).

Cordialement.
cep

Attention: dans ce cas, il faut absolument que le fichier de sortie de sed (après le caractère '>') soit différent du fichier en entrée, sinon il y a de grands risques d'écrasement du fichier.
En effet, cat va lire un morceau du fichier (dépendant de la taille de son buffer et/ou du buffer implicite du tube) puis le fournir en entrée de sed qui va écrire le résultat de son traitement dans le même fichier. Si le fichier est plus gros que ce buffer, surprise big_smile

On peut trouver des infos utiles sur l'utilisation de sed dans le man de ed (entre autres sur les expressions régulières).

Hors ligne

#11 Le 22/05/2006, à 08:59

cep_

Re : Manipulation de fichiers texte en console

Hum, avec les options de sed et un cat, la plage est tout de même large.
Le plus gros défaut de cette commande est plutôt qu'il va prendre toto mais aussi totos.
De toute façon une sauvegarde est indispensable ne serait-ce que suite aux aléas des ' ou ".