Supprimer saut de ligne sous UNIX
Fermé
Karen
-
24 nov. 2008 à 16:42
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 26 nov. 2008 à 18:49
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 26 nov. 2008 à 18:49
A voir également:
- Sed supprimer retour chariot
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Impossible de supprimer un fichier - Guide
- Retour à la ligne excel - Guide
- Supprimer pub youtube - Accueil - Streaming
14 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 897
24 nov. 2008 à 16:50
24 nov. 2008 à 16:50
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
24 nov. 2008 à 17:24
24 nov. 2008 à 17:24
Salut,
perl -pi.orig -e 's/\r//' ton_fichier
Merci mais encore une fois cela ne change rien ma chaine de caractères se décomposent.
Peut être qu'une simple instruction n'est suffisante et qu'il faut que je fasse un script en KSH afin de recréer mes lignes une à une.
J'ai quelques idées mais encore une fois mon manque de connaissances me bloque, connaissez vous un bon support afin que je trouve les instructions de base?
Peut être qu'une simple instruction n'est suffisante et qu'il faut que je fasse un script en KSH afin de recréer mes lignes une à une.
J'ai quelques idées mais encore une fois mon manque de connaissances me bloque, connaissez vous un bon support afin que je trouve les instructions de base?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
24 nov. 2008 à 17:52
24 nov. 2008 à 17:52
Salut,
En fait on aura besoin d'un p'tit bout de ton fichier pour pouvoir tester.
Et mets le fichier.test sur cjoint.com
En fait on aura besoin d'un p'tit bout de ton fichier pour pouvoir tester.
head -10000 ton_fichier > fichier.test
Et mets le fichier.test sur cjoint.com
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
24 nov. 2008 à 18:04
24 nov. 2008 à 18:04
Ou aussi sans passer par Cjoint, un bout du fichier avec :
head fichier | cat -A
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
24 nov. 2008 à 18:02
24 nov. 2008 à 18:02
Sinon il y a aussi "dos2unix" qui te fait ça tout seul...
Les données étant confidentielles je ne peux pas vous donner le fichier même une partie.
Mais je peux vous en créer un fictif pour tester le problème et vous le mettre à dispo demain. Cela peut venir d'un autre caractère selon vous ?
Je vais re-tester dos2unix mais il me semble que cela ne marche pas non plus.
Merci pour votre aide.
Mais je peux vous en créer un fictif pour tester le problème et vous le mettre à dispo demain. Cela peut venir d'un autre caractère selon vous ?
Je vais re-tester dos2unix mais il me semble que cela ne marche pas non plus.
Merci pour votre aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
24 nov. 2008 à 18:14
24 nov. 2008 à 18:14
Salut,
Mais je peux vous en créer un fictif pour tester le problème et vous le mettre à dispo demain.
Ok, ça sera parfait ;-)
Mais je peux vous en créer un fictif pour tester le problème et vous le mettre à dispo demain.
Ok, ça sera parfait ;-)
Salut,
Le lien pour tester mon fichier, il est fictif mais reproduit mon pb.
https://www.cjoint.com/?lzj00AHhsv
Merci
Le lien pour tester mon fichier, il est fictif mais reproduit mon pb.
https://www.cjoint.com/?lzj00AHhsv
Merci
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
>
Karen
25 nov. 2008 à 10:25
25 nov. 2008 à 10:25
Salut,
Je ne pourrai regarder que ce soir.
Peut être que jipicy pourra regarder avant ;-))
Je ne pourrai regarder que ce soir.
Peut être que jipicy pourra regarder avant ;-))
Karen
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
25 nov. 2008 à 10:34
25 nov. 2008 à 10:34
C'est déjà bien de m'apporter de l'aide je ne peux que dire merci même si tu ne regardes que ce soir.
Bien que j'espere trouver la solution par moi même dans l'aprés midi :p
Si c'est le cas j'expliquerais ma solution.
Bien que j'espere trouver la solution par moi même dans l'aprés midi :p
Si c'est le cas j'expliquerais ma solution.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 nov. 2008 à 10:40
25 nov. 2008 à 10:40
Re,
Tape cette commande et affiche le résultat
Tape cette commande et affiche le résultat
perl -ne 's/(.)/ord($1)/egs;print "$_\n"' fichier.fictifMerci.
Euh... ca me donne ca...
"67111100101326711110910911711010132826782658432583253504950493495148465250545210
48495356534955575148485050509485150535656515156559828569327165826932453278698573767689327632698669818569324053504193452321129710511410111532971173210911110511011532115111110116321001051151121111101059810810111510
679710810598114101321081111101031171011171143258324852484948484912410
826782658432583278698610
671111001013267111109109117110101328267826584325832535051525634949544653495310
"
"67111100101326711110910911711010132826782658432583253504950493495148465250545210
48495356534955575148485050509485150535656515156559828569327165826932453278698573767689327632698669818569324053504193452321129710511410111532971173210911110511011532115111110116321001051151121111101059810810111510
679710810598114101321081111101031171011171143258324852484948484912410
826782658432583278698610
671111001013267111109109117110101328267826584325832535051525634949544653495310
"
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 nov. 2008 à 11:10
25 nov. 2008 à 11:10
Ton exemple ne m'aide pas puisque je ne sais pas quelles lignes tu m'affiche.
Tape et mets sur cjoint.com le résultat (le fichier fictif.txt)
Le but de ma commande c'est de depister les caractès ASCII que je dois supprimer.
Tape et mets sur cjoint.com le résultat (le fichier fictif.txt)
perl -ne 's/(.)/ord($1)/egs;print "$_\n"' fichier.fictif > fictif.txt
Le but de ma commande c'est de depister les caractès ASCII que je dois supprimer.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
25 nov. 2008 à 13:30
25 nov. 2008 à 13:30
Re-
Tu peux essayer ça s'il te plait et me dire si ça le fait ?
Tu peux essayer ça s'il te plait et me dire si ça le fait ?
sed ':z;N;/^M$/!bz;s/\x0A/ /g' ton_fichier;-)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
25 nov. 2008 à 14:57
25 nov. 2008 à 14:57
Quelle version de sed ? Quel système ?
Essaye comme ça alors :
Essaye comme ça alors :
sed ' :z N /^M/ !b z s/\x0A/ /g ' ton_fichier
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 nov. 2008 à 16:41
25 nov. 2008 à 16:41
Salut,
Ok, j'ai compris pourquoi
On remarque que entre les lignes qui se finissent avec CarriageReturn (^M) il y a des lignes qui se finissent avec \n.
En supprimant seulement ^M toutes les lignes restent inchangées.
A savoir qu'entre deux ^M il y a une seule ligne (les cellules y compris celles avec CarriageReturn Les sauts de lignes proviennent des "ALT+Entrée" fait dans des cellules excel. ).
Donc on doit d'abord supprimer (ou le remplacer avec un espace) le \n entre deux ^M et ensuite supprimer le ^M
Un exemple (les 20 premiers lignes)
A faire sur ton fichier (le fichier original aura l'extension .orig)
Ok, j'ai compris pourquoi
lami20j@debian:~/trash$ cat -t exemple_fichier.txt | head -10 IDENT^IAdresse du client^IConstruction de ligne^IAff_total^M 000001^ILISTE ROUGE^I"3 paire(s) disponible(s) Calibre longueur : 0400385| RCRAT : ABB Code Commune RCRAT : 80001"^I7.275^M 000002^ILISTE ROUGE^I"3 paire(s) disponible(s) Calibre longueur : 0400400| RCRAT : ABB Code Commune RCRAT : 80001"^I7.5^M 000003^ILISTE ROUGE^I"3 paire(s) disponible(s) lami20j@debian:~/trash$
On remarque que entre les lignes qui se finissent avec CarriageReturn (^M) il y a des lignes qui se finissent avec \n.
En supprimant seulement ^M toutes les lignes restent inchangées.
A savoir qu'entre deux ^M il y a une seule ligne (les cellules y compris celles avec CarriageReturn Les sauts de lignes proviennent des "ALT+Entrée" fait dans des cellules excel. ).
Donc on doit d'abord supprimer (ou le remplacer avec un espace) le \n entre deux ^M et ensuite supprimer le ^M
Un exemple (les 20 premiers lignes)
lami20j@debian:~/trash$ perl -ne '!/\r/?s/\n//:s/\r//;print' exemple_fichier.txt | head -20 IDENT Adresse du client Construction de ligne Aff_total 000001 LISTE ROUGE "3 paire(s) disponible(s)Calibre longueur : 0400385|RCRAT : ABBCode Commune RCRAT : 80001" 7.275 000002 LISTE ROUGE "3 paire(s) disponible(s)Calibre longueur : 0400400|RCRAT : ABBCode Commune RCRAT : 80001" 7.5 000003 LISTE ROUGE "3 paire(s) disponible(s)Calibre longueur : 0400385|RCRAT : ABBCode Commune RCRAT : 80001" 7.275 000004 LISTE ROUGE "4 paires au moins sont disponiblesCalibre longueur : 0400695|RCRAT : HESCode Commune RCRAT : 62447" 11.925 000005 LISTE ROUGE "4 paires au moins sont disponiblesCalibre longueur : 0400695|RCRAT : HESCode Commune RCRAT : 62447" 11.925 000006 LISTE ROUGE "3 paire(s) disponible(s)Calibre longueur : 0600880|0400135|RCRAT : FEQCode Commune RCRAT : 80308" 12.589 000007 LISTE ROUGE "3 paire(s) disponible(s)Calibre longueur : 0601630|0401145|RCRAT : FEQCode Commune RCRAT : 80308" 35.464 000008 LISTE ROUGE "4 paires au moins sont disponiblesCalibre longueur : 0603590|0400495|RCRAT : WOICode Commune RCRAT : 80827" 45.902 000009 LISTE ROUGE "Il n'y a pas de paire disponible à l'adresseCalibre longueur : 0401268|RCRAT : ABBCode Commune RCRAT : 80001" 20.52 000010 LISTE ROUGE "1 paire(s) disponible(s)Calibre longueur : 0602950|0402310|RCRAT : BUMCode Commune RCRAT : 80149" 66.535 000011 LISTE ROUGE "1 paire(s) disponible(s)Calibre longueur : 0602950|0402310|RCRAT : BUMCode Commune RCRAT : 80149" 66.535 000012 LISTE ROUGE "Il n'y a pas de paire disponible à l'adresseCalibre longueur : 0400345|RCRAT : ABBCode Commune RCRAT : 80001" 6.675 000013 LISTE ROUGE "Il n'y a pas de paire disponible à l'adresseCalibre longueur : 0400345|RCRAT : ABBCode Commune RCRAT : 80001" 6.675 000014 LISTE ROUGE "4 paires au moins sont disponiblesCalibre longueur : 0603523|RCRAT : ABBCode Commune RCRAT : 80001" 37.7869 000015 LISTE ROUGE "3 paire(s) disponible(s)Calibre longueur : 0401230|RCRAT : ABBCode Commune RCRAT : 80001" 19.95 000016 LISTE ROUGE "1 paire(s) disponible(s)Calibre longueur : 0606185|RCRAT : AULCode Commune RCRAT : 80039" 65.2055 000017 LISTE ROUGE "Il n'y a pas de paire disponible à l'adresseCalibre longueur : 0403620|RCRAT : ABBCode Commune RCRAT : 80001" 55.8 000018 LISTE ROUGE "Il n'y a pas de paire disponible à l'adresseCalibre longueur : 0403620|RCRAT : ABBCode Commune RCRAT : 80001" 55.8 000019 LISTE ROUGE "Il n'y a pas de paire disponible à l'adresseCalibre longueur : 0403620|RCRAT : ABBCode Commune RCRAT : 80001" 55.8
A faire sur ton fichier (le fichier original aura l'extension .orig)
perl -pi.orig -e '!/\r/?s/\n//:s/\r//' exemple_fichier.txt
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
>
Karen
25 nov. 2008 à 17:48
25 nov. 2008 à 17:48
Re,
comment ça sur une seule ligne
Regarde, il y a 85 lignes sur ton exemple_fichier.txt
comment ça sur une seule ligne
Regarde, il y a 85 lignes sur ton exemple_fichier.txt
$ perl -ne '!/\r/?s/\n//:s/\r//;print' exemple_fichier.txt | wc -l 85
Karen
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
25 nov. 2008 à 17:57
25 nov. 2008 à 17:57
Ce que je veux dire c'est que à la base j'ai un fichier de x lignes et une fois la commande exécuter, le fichier contient 1 seule ligne.
Quand il y a peu de ligne c'est gérable mais mon fichier de base en contient 3 millions... alors ca génére un fichier impossible à ouvir.
Quand il y a peu de ligne c'est gérable mais mon fichier de base en contient 3 millions... alors ca génére un fichier impossible à ouvir.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
>
Karen
25 nov. 2008 à 18:08
25 nov. 2008 à 18:08
Re,
Ouvrir avec quoi?
Pour l'info j'ai traité des fichiers avec 68201421 lignes.
Pour moi 3 millions n'est pas grande chose.
Mais je ne suis pas sur d'avoir saisi ton but.
Bon, le fichier on le parse. Mais que veux tu faire avec le fichier que tu obtiendras.
Au début tu parles d'une table. Je pense que tu dois donner un peu plus de détails.
Ouvrir avec quoi?
Pour l'info j'ai traité des fichiers avec 68201421 lignes.
Pour moi 3 millions n'est pas grande chose.
Mais je ne suis pas sur d'avoir saisi ton but.
Bon, le fichier on le parse. Mais que veux tu faire avec le fichier que tu obtiendras.
Au début tu parles d'une table. Je pense que tu dois donner un peu plus de détails.
Karen
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
26 nov. 2008 à 10:01
26 nov. 2008 à 10:01
Salut,
Dans la précipitation je me suis peut être mal exprimée.
Le fichier :
A la base j'ai un fichier TXT qui contient 3 millions de lignes et 5 colonnes.
Ce fichier a été construit à partir d'EXCEL, c'est une concaténation de plusieurs fichiers.
Dans la troisième colonne il y a des sauts de lignes, utilisation de ALT+ENTREE dans la cellule.
Mon environnement :
Je travail avec une base de données SAS dans un environnement Unix, j'y accède en utilisant EXCEED.
Mon taff :
Mon but est d'intégrer ce fichier dans ma base de données.
Mon PB :
Le fichier contient des sauts de lignes à l'intérieur d'une colonne qui font que lorsque j'importe ce fichier cette colonne se transforme en plusieurs nouvelles lignes (autant de lignes que de sauts de lignes présents dans la cellule…). Ce qui a pour impact de créer une table totalement fausse.
Ma solution "idéale" (non trouvée) :
Je dois retravailler mon fichier afin de supprimer (ou remplacer) ces sauts de lignes (ceux créer par ALT+ENTREE)
pour qu'une ligne de mon fichier corresponde à une ligne dans ma table.
Actuellement :
Les solutions que vous m'avez proposé, et je vous en remercie, supprime tous les sauts de lignes ce qui fait que je me retrouve avec un fichier contenant 1 ligne et donc inexploitable pour construire ma table.
Ma solution de contournement :
Je suis maintenant dans l'urgence donc je vais demander qu'on me renvoi un fichier déjà retravailler mais dans 1 mois je serais à nouveau confronter à ce problème donc si vous avez une solution elle sera la bienvenue.
J'espère avoir bien testé les codes que vous m'avez envoyés et avoir mieux exposé mon problème.
Merci de l'aide que vous m'avez apporté.
Dans la précipitation je me suis peut être mal exprimée.
Le fichier :
A la base j'ai un fichier TXT qui contient 3 millions de lignes et 5 colonnes.
Ce fichier a été construit à partir d'EXCEL, c'est une concaténation de plusieurs fichiers.
Dans la troisième colonne il y a des sauts de lignes, utilisation de ALT+ENTREE dans la cellule.
Mon environnement :
Je travail avec une base de données SAS dans un environnement Unix, j'y accède en utilisant EXCEED.
Mon taff :
Mon but est d'intégrer ce fichier dans ma base de données.
Mon PB :
Le fichier contient des sauts de lignes à l'intérieur d'une colonne qui font que lorsque j'importe ce fichier cette colonne se transforme en plusieurs nouvelles lignes (autant de lignes que de sauts de lignes présents dans la cellule…). Ce qui a pour impact de créer une table totalement fausse.
Ma solution "idéale" (non trouvée) :
Je dois retravailler mon fichier afin de supprimer (ou remplacer) ces sauts de lignes (ceux créer par ALT+ENTREE)
pour qu'une ligne de mon fichier corresponde à une ligne dans ma table.
Actuellement :
Les solutions que vous m'avez proposé, et je vous en remercie, supprime tous les sauts de lignes ce qui fait que je me retrouve avec un fichier contenant 1 ligne et donc inexploitable pour construire ma table.
Ma solution de contournement :
Je suis maintenant dans l'urgence donc je vais demander qu'on me renvoi un fichier déjà retravailler mais dans 1 mois je serais à nouveau confronter à ce problème donc si vous avez une solution elle sera la bienvenue.
J'espère avoir bien testé les codes que vous m'avez envoyés et avoir mieux exposé mon problème.
Merci de l'aide que vous m'avez apporté.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
26 nov. 2008 à 10:08
26 nov. 2008 à 10:08
Salut,
Je ne comprends toujours pas.
La solution que je t'ai donné ne génere pas un fichier avec une seule ligne (celle de jipicy non plus)
Tape cette commande sur ton fichier de 3 millions lignes et affiche le résultat
Je ne comprends toujours pas.
La solution que je t'ai donné ne génere pas un fichier avec une seule ligne (celle de jipicy non plus)
Tape cette commande sur ton fichier de 3 millions lignes et affiche le résultat
perl -ne '!/\r/?s/\n//:s/\r//;print' fichier_3millions.txt | wc -l
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
26 nov. 2008 à 10:30
26 nov. 2008 à 10:30
Re,
Alors l'exemple de fichier fictif que tu m'as donnée n'est pas bon.
Alors l'exemple de fichier fictif que tu m'as donnée n'est pas bon.
Le fichier de test envoyé contient des TAB comme séparateur mon fichier contient des ; ... est ce que cela peut venir de la?
Dans le doute je te remets un nouveau fichier à dispo.
Dans le doute je te remets un nouveau fichier à dispo.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
26 nov. 2008 à 10:41
26 nov. 2008 à 10:41
Re,
Dans le doute je te remets un nouveau fichier à dispo.
Il vaut mieux ;-)
C'est très important d'avoir le même environnement.
Dans le doute je te remets un nouveau fichier à dispo.
Il vaut mieux ;-)
C'est très important d'avoir le même environnement.
Karen
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
26 nov. 2008 à 10:55
26 nov. 2008 à 10:55
J'ai ouvert le ficher d'origine dans ultra edit,
j'ai copié les premieres lignes,
modifié quelques données pour garder la confidentialité
et enregistré mon fichier exemple..
https://www.cjoint.com/?lAkX66nLGF
Merci de ta patience face à mon ignorance :)
j'ai copié les premieres lignes,
modifié quelques données pour garder la confidentialité
et enregistré mon fichier exemple..
https://www.cjoint.com/?lAkX66nLGF
Merci de ta patience face à mon ignorance :)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
Karen
26 nov. 2008 à 18:49
26 nov. 2008 à 18:49
Tiens tu peux essayer ça sur ton fichier de test :
sed ':z;N;$! bz;s/\n[^"]//g' fichier_testet voir si ça fait l'affaire...
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
26 nov. 2008 à 11:02
26 nov. 2008 à 11:02
Re,
Justement, dans ton fichier que tu as envoyé dans la 3ème colonne il n'y a rien.
Tout est dans colonne A.
Envoi plutôt le fichier xls.
Tu perds déjà ta mise en page au moment d'enregistrement sous format .csv
Justement, dans ton fichier que tu as envoyé dans la 3ème colonne il n'y a rien.
Tout est dans colonne A.
Envoi plutôt le fichier xls.
Tu perds déjà ta mise en page au moment d'enregistrement sous format .csv
24 nov. 2008 à 17:19
Et par manque de connaissances je ne serais dire pourquoi..
Mais en tout cas quand je l'ouvre avec vi cela ne change rien.
quand j'ouvre mon fichier sous windows avec blocnote ou ultraedit:
champ1;champ2;champ3;champ4
ident01;blabla blabla blabla;10 ; blabla
ident02; ...
quand j'ouvre mon fichier sous unix :
champ1;champ2;champ3;champ4
indent01;blabla
blabla
blabla
10;blabla
indent02; ...