Formater un fichier ascii avec SED

Résolu/Fermé
tht123 Messages postés 72 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 10 janvier 2009 - 21 mai 2007 à 13:02
tht123 Messages postés 72 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 10 janvier 2009 - 21 mai 2007 à 22:34
Bonjour,

J'ai effectué plusieurs opérations sur un fichier ascii de 100Mo avec SED et suis étonament surpris de sa puissance mais je suis bloqué sur un problème:

Après filtrage mon fichier fait 10Mo Génial!

MAIS j'ai des lignes en double non consécutives que je ne parviens pas à eliminer j'ai pourtant essayé :

sed -n 'G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P'

Mais rien ne fonctionne, peut être du a la taille du fichier, mais alors comment faire???

Dores et déjà merci!
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
21 mai 2007 à 13:20
Salut,

Pourquoi avec "sed" ?
L'emploi d'autres filtres (sort et uniq) n'est pas envisageable ?

Sinon, pourquoi commencer par doubler toutes tes lignes vides (G) ???
0
tht123 Messages postés 72 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 10 janvier 2009
21 mai 2007 à 17:50
Hello jipicy,

En fait je dois réaliser un fichier DB à partir de plusieurs fichiers ascii que je rassemblent en un seul et ensuite efface un tas d'infos inutiles à mon appli finale.....


Mais je ne suis pas un informaticien pur et dur, alors j'ai trouvé dans les GNU SED pour ma manipulation de chaines de caractères sans pour autant connaitre d'autre petites merveilles similaires ...

Mais là j'ai trouvé un pack d'installation rassemblant entre autre sed,uniq,..... et bien d'autre et ce suite à tes conseils.

Et mon problème est résolu pour les doublons!!!

VOICI UN LIEN POUR LES INTERESS(E)ES :

http://unxutils.sourceforge.net/

Je te remercie bien sincèrement pour tes conseils!!!

Au fait pourrais-tu me donner une info pour des modif sur un fichier??


@+ et BAT
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
21 mai 2007 à 17:55
Re-

Au fait pourrais-tu me donner une info pour des modif sur un fichier??

Je veux bien, mais quel genre de modifs ???
0
tht123 Messages postés 72 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 10 janvier 2009
21 mai 2007 à 22:34
Merci,

En je me retrouve avec un format comme suit:

Ref0123456789A 3Descriptionartxyhuiklchlsidfdsvbfdsvb
Ref0123456789A 5Denomination PARAMx 5 °C
Ref0123456789A 5Denomination PARAMy 1.5 s
Ref0123456789A 5Denomination PARAMt 4 m
Ref0123456789A 5Denomination PARAMw 5 m/s
Ref0123456789A 5Denomination PARAMj 5 °C
Ref0123456782A 3Descriptionartjcdksvhjhwdvoiiiiifhfuggggg
Ref0123456782A 5Denomination PARAMg 5 °C
Ref0123456782A 5Denomination PARAMe 1.5 s
Ref0123456782A 5Denomination PARAMp 4 m
Ref99999yyyy6A 3Descriptionfffttttttttttttyyyyyyyyyyyyyy
Ref9999996789A 3Descriptionffffffffffffllllllllllllllkkkkkkkfvldjfv
Ref0123456789A 5Denomination PARAMr 5 °C
Ref0123456789A 5Denomination PARAMy 1.5 s
Ref0123456789A 5Denomination PARAMt 4 m
Ref0123456789A 5Denomination PARAMj 5 °C

Voilà, pas de panique je m'explique :

Le 16ème caractère est soit 3 ou 5, si c'est un 3 c'est le début de la description d'un ITEM de ma DB ensuite on a des lignes avec 5 en 16ème pos : ce sont des informations relatives à l'item

Le problème est que le nombre de ligne avec le 5 peut varier de 0 à une valeur indéterminée (5, 10, 30???)

Après traitement, je souhaiterais obtenir :

Ref0123456789A ; 3Descriptionartxyhuiklchlsidfdsvbfdsvb ; 5Denomination ; PARAMx = 5 = °C ; PARAMy = 1.5 = s; PARAMt= 4= m; PARAMw= 5= m/s; PARAMj= 5°C.
Ref0123456782A; 3Descriptionartjcdksvhjhwdvoiiiiifhfuggggg;
5Denomination;PARAMg=5=°C; PARAMe=1.5= s;PARAMp = 4.
Ref99999yyyy6A; 3Descriptionfffttttttttttttyyyyyyyyyyyyyy.
Ref9999996789A; 3Descriptionffffffffffffllllllllllllllkkkkkkkfvldjfv;
5Denomination ; PARAMr = 5=°C;PARAMy=1.5= s; PARAMt = 4= m; PARAMj= 5=°C.


En fait chaque article n'occuperais plus qu'une ligne avec ses caractéristiques séparées par un ";" et fin de ligne "." pour les importer dans une dB ensuite....

Je peut réaliser ce que je te demande en soft pur mais pour sécurité de manip des datas j'aimerais passer par sed

Qu'en pense tu est-ce faisable???

BAT
0