Formater un fichier ascii avec SED
Résolu
tht123
Messages postés
72
Date d'inscription
Statut
Membre
Dernière intervention
-
tht123 Messages postés 72 Date d'inscription Statut Membre Dernière intervention -
tht123 Messages postés 72 Date d'inscription Statut Membre Dernière intervention -
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!
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:
- Formater un fichier ascii avec SED
- Code ascii - Guide
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment formater un pc - Guide
3 réponses
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) ???
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) ???
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
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
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
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