(sed) Enlever le
Résolu
titexe
Messages postés
55
Date d'inscription
Statut
Membre
Dernière intervention
-
titexe Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
titexe Messages postés 55 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
j'ai un nouveau petit point à traiter avec sed, dont j'ai besoin de votre aide,
ce fichier contient sur chaque fin de ligne ou il y'a un retour chariot "=", quand j'ai fais set list, j'ai detecté qu'aprés chaque "=" , y'a un caractére caché "$",
comment peut on enlever ce caractére "=" et le caractére caché "$" qui va éleminer le retour chariot?
ex fichier :
@|99|OR|99|CT|200611061008|2006|1||PE|ACTES||||
B|2006|1|12|8130|121101200000001072|2006|1079|9|AAAAAA =
AAAAAAAAA|495.0|N|6758|19/04/2006|270||||0.0|P|D668161|31/08/2006|indemnit=
e forfaitaire du 01/06/2006 au 31/08/2006|0.0|||||||||C| | |
B|2006|1|12|8131|121101200000001072|2006|1079|9|BBBB =
BBBBBBB|495.0|N|6758|19/04/2006|270||||0.0|P|Z346370|31/08/2006|indemnit=
e forfaitaire du 01/06/2006 au 31/08/2006|0.0|||||||||C| | |
&|2|
le resultat attendu c est :
@|99|OR|99|CT|200611061008|2006|1||PE|ACTES||||
B|2006|1|12|8130|121101200000001072|2006|1079|9|AAAAAA AAAAAAAAA|495.0|N|6758|19/04/2006|270||||0.0|P|D668161|31/08/2006|indemnite forfaitaire du 01/06/2006 au 31/08/2006|0.0|||||||||C| | |
B|2006|1|12|8131|121101200000001072|2006|1079|9|BBBB BBBBBBB|495.0|N|6758|19/04/2006|270||||0.0|P|Z346370|31/08/2006|indemnit
e forfaitaire du 01/06/2006 au 31/08/2006|0.0|||||||||C| | |
&|2|
le résultat doit contenir 4 lignes.
D'avance merci,
Cordialement,
j'ai un nouveau petit point à traiter avec sed, dont j'ai besoin de votre aide,
ce fichier contient sur chaque fin de ligne ou il y'a un retour chariot "=", quand j'ai fais set list, j'ai detecté qu'aprés chaque "=" , y'a un caractére caché "$",
comment peut on enlever ce caractére "=" et le caractére caché "$" qui va éleminer le retour chariot?
ex fichier :
@|99|OR|99|CT|200611061008|2006|1||PE|ACTES||||
B|2006|1|12|8130|121101200000001072|2006|1079|9|AAAAAA =
AAAAAAAAA|495.0|N|6758|19/04/2006|270||||0.0|P|D668161|31/08/2006|indemnit=
e forfaitaire du 01/06/2006 au 31/08/2006|0.0|||||||||C| | |
B|2006|1|12|8131|121101200000001072|2006|1079|9|BBBB =
BBBBBBB|495.0|N|6758|19/04/2006|270||||0.0|P|Z346370|31/08/2006|indemnit=
e forfaitaire du 01/06/2006 au 31/08/2006|0.0|||||||||C| | |
&|2|
le resultat attendu c est :
@|99|OR|99|CT|200611061008|2006|1||PE|ACTES||||
B|2006|1|12|8130|121101200000001072|2006|1079|9|AAAAAA AAAAAAAAA|495.0|N|6758|19/04/2006|270||||0.0|P|D668161|31/08/2006|indemnite forfaitaire du 01/06/2006 au 31/08/2006|0.0|||||||||C| | |
B|2006|1|12|8131|121101200000001072|2006|1079|9|BBBB BBBBBBB|495.0|N|6758|19/04/2006|270||||0.0|P|Z346370|31/08/2006|indemnit
e forfaitaire du 01/06/2006 au 31/08/2006|0.0|||||||||C| | |
&|2|
le résultat doit contenir 4 lignes.
D'avance merci,
Cordialement,
A voir également:
- (sed) Enlever le
- Enlever pub youtube - Accueil - Streaming
- Comment enlever le mode sécurisé - Guide
- Comment enlever une page sur word - Guide
- Comment enlever le en ligne sur instagram - Guide
- Comment enlever le rond bleu sur whatsapp - Guide
21 réponses
Si c'est juste suprimer les = en fin de ligne ca donne, si je ne m'abuse :
Bonne chance
sed 's/=$//g' fichier
Bonne chance
Salut,
Après = il y a un \r ou \n qu'il faut le supprimer.
Je n'ai pas testé :-) mais -i.orig sauvegarde le fichier
sed -i.orig /=[\r\n]*// fichierIl faut l'option -i pour editer le fichier en place
Après = il y a un \r ou \n qu'il faut le supprimer.
Je n'ai pas testé :-) mais -i.orig sauvegarde le fichier
Bonjour Lami20j,
ca va ?
meme avec cette derniére commande et ca marche pas ;
D:\Program Files\GnuWin32\bin>sed -i.orig /=[\r\n]*// F0007913.dc
sed: -e expression #1, char 11: unknown command: `/'
D:\Program Files\GnuWin32\bin>sed -i /=[\r\n]*// F0007913.dc
sed: -e expression #1, char 11: unknown command: `/'
Merci d'avance
ca va ?
meme avec cette derniére commande et ca marche pas ;
D:\Program Files\GnuWin32\bin>sed -i.orig /=[\r\n]*// F0007913.dc
sed: -e expression #1, char 11: unknown command: `/'
D:\Program Files\GnuWin32\bin>sed -i /=[\r\n]*// F0007913.dc
sed: -e expression #1, char 11: unknown command: `/'
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour,
je sais pas pourquoi ca marche pas chez moi , je l'ai testé plusieurs fois , sous unix et windows et toujours le meme résultat?
je sais pas pourquoi ca marche pas chez moi , je l'ai testé plusieurs fois , sous unix et windows et toujours le meme résultat?
Salut,
Essaye ça :
(CTRL+V) + (CTRL+M)
;-))
Essaye ça :
sed 's/=*^M$//' mfm1dYJbFc_test.dc | cat -tLe "^M" s'obtient par la combinaison de touches :
(CTRL+V) + (CTRL+M)
;-))
bonjour,
pardonnez moi , je comprends pas pourquoi ca marche pas chez moi, voila qu es ce que j ai fait ?
/usr/test > sed 's/=*^M$//' mfm1dYJbFc_test.dc | cat –t
@|99|OR|99|CT|200611061008|2006|1||PE|ACTES||||
B|2006|1|12|8130|121101200000001072|2006|1079|9|OUBELKACEM =
ESSAADIA|495.0|N|6758|19/04/2006|270||||0.0|P|D668161|31/08/2006|indemnit=
e forfaitaire du 01/06/2006 au 31/08/2006|0.0|||||||||C| | |
B|2006|1|12|8131|121101200000001072|2006|1079|9|OURYA =
OUIDYANE|495.0|N|6758|19/04/2006|270||||0.0|P|Z346370|31/08/2006|indemnit=
e forfaitaire du 01/06/2006 au 31/08/2006|0.0|||||||||C| | |
&|2|
comment vous expliquez ca ?
je compte sur vous pour m'aider a résoudre ce probléme, merci d'avance.
Cdlt
pardonnez moi , je comprends pas pourquoi ca marche pas chez moi, voila qu es ce que j ai fait ?
/usr/test > sed 's/=*^M$//' mfm1dYJbFc_test.dc | cat –t
@|99|OR|99|CT|200611061008|2006|1||PE|ACTES||||
B|2006|1|12|8130|121101200000001072|2006|1079|9|OUBELKACEM =
ESSAADIA|495.0|N|6758|19/04/2006|270||||0.0|P|D668161|31/08/2006|indemnit=
e forfaitaire du 01/06/2006 au 31/08/2006|0.0|||||||||C| | |
B|2006|1|12|8131|121101200000001072|2006|1079|9|OURYA =
OUIDYANE|495.0|N|6758|19/04/2006|270||||0.0|P|Z346370|31/08/2006|indemnit=
e forfaitaire du 01/06/2006 au 31/08/2006|0.0|||||||||C| | |
&|2|
comment vous expliquez ca ?
je compte sur vous pour m'aider a résoudre ce probléme, merci d'avance.
Cdlt
oups, c'est ma faute, j'ai oublié le print :-)
perl -ne 's/(.)/ord($1)/eg; print' mfm1dYJbFc_test.dc
voila le résultat :
perl -ne 's/(.)/ord($1)/eg; print' mfm1dYJbFc_test.dc
641245757124798212457571246784124504848544949485449484856124504848541244912412480691246567846983124124124124
661245048485412449124495012456495148124495049494849504848484848484849485550124504848541244948555712457124798566697675656769773261
6983836565687365124525753464812478124545553561244957474852475048485412450554812412412412448464812480124685454564954491245149474856475048485412410511010010110911010511661
10132102111114102971051169710511410132100117324849474854475048485432971173251494748564750484854124484648124124124124124124124124124671243212432124
merci,
perl -ne 's/(.)/ord($1)/eg; print' mfm1dYJbFc_test.dc
641245757124798212457571246784124504848544949485449484856124504848541244912412480691246567846983124124124124
661245048485412449124495012456495148124495049494849504848484848484849485550124504848541244948555712457124798566697675656769773261
6983836565687365124525753464812478124545553561244957474852475048485412450554812412412412448464812480124685454564954491245149474856475048485412410511010010110911010511661
10132102111114102971051169710511410132100117324849474854475048485432971173251494748564750484854124484648124124124124124124124124124671243212432124
merci,
Il y a quelque chose qui ne va pas
tu vois les lignes qui se finissent avec 61?
61 c'est le code ASCII pour =
donc après 61 on devrait avoir 13 (enfin c'est ça que j'ai obtenu sur ton fichier que tu m'as donné par cjoint.com)
Tu travailles sur une portion de fichier ou sur le fichier entier?
tu vois les lignes qui se finissent avec 61?
61 c'est le code ASCII pour =
donc après 61 on devrait avoir 13 (enfin c'est ça que j'ai obtenu sur ton fichier que tu m'as donné par cjoint.com)
Tu travailles sur une portion de fichier ou sur le fichier entier?
C'est bizarre.
Je verrai ce soir.
Tu peux compresser le fichier et le passer par e-mail (regarde mon profil)
Je verrai ce soir.
Tu peux compresser le fichier et le passer par e-mail (regarde mon profil)
Salut,
tu va remarquer à la fin de certains lignes 6113 (chez toi je ne vois pas ça) - c'est = et carriage return
Voici le fichier avec les caractères convertis en ASCII https://www.cjoint.com/?mit1YbzzmU
et le fichier obtenu après la suppression https://www.cjoint.com/?mit2uTW4mo
$ perl -ne 'print' mfm1dYJbFc_test.dc | wc -l 140le fichier original a 140 lignes
$ perl -ne 's/=\r\n//;print' mfm1dYJbFc_test.dc | wc -l 42le fichier après la suppresion (ici je fais juste un teste sans sauvegarder les modifications) de = et fin de ligne a 42 lignes
$ perl -ne 's/(.)/ord($1)/eg;print' mfm1dYJbFc_test.dc > ascii_test.dcdans ce fichier je converti les caractères en code ASCII
tu va remarquer à la fin de certains lignes 6113 (chez toi je ne vois pas ça) - c'est = et carriage return
$ perl -ne 's/=\r\n//;print' mfm1dYJbFc_test.dc > suppegal_test.dcje supprime = et caractère de fin de ligne et je sauvegarde le fichier
$ cat ascii_test.dc | wc -l 140le fichier original (les caractères en ascii cette fois ci) a toujours 140 lignes
$ cat suppegal_test.dc | wc -l 42le fichier obtenu a 42 lignes
Voici le fichier avec les caractères convertis en ASCII https://www.cjoint.com/?mit1YbzzmU
et le fichier obtenu après la suppression https://www.cjoint.com/?mit2uTW4mo
Par exemple si je compte le nombre de = suit d'un carriage return j'obtiens 98 qui veut dire
140 - 98 = 42 donc le résultat que j'obtiens
calculer le nombre d'occurence = suit de carriage return
140 - 98 = 42 donc le résultat que j'obtiens
calculer le nombre d'occurence = suit de carriage return
$ perl -e 'print scalar(map{/=\r\n/}`cat mfm1dYJbFc_test.dc`),"\n"' 98
Bonjour,
j'ai consulter le fichier (mit2uTW4mo_suppegal_test.dc),tout a fait c'est ca le résultat que je cherche !!!
je procéderais le lundi a faire la meme manipulation, et je vous tienderais au courant,
Merci beaucoup pour votre réactivité, et esperant que j obtienderais le meme résultat!!!
Merci encore une fois
j'ai consulter le fichier (mit2uTW4mo_suppegal_test.dc),tout a fait c'est ca le résultat que je cherche !!!
je procéderais le lundi a faire la meme manipulation, et je vous tienderais au courant,
Merci beaucoup pour votre réactivité, et esperant que j obtienderais le meme résultat!!!
Merci encore une fois
bonjour,
voila j'ai exécuté les meme commande et voila le résultat :
# perl -ne 'print' mfm1dYJbFc_test.dc | wc -l
141
# perl -ne 's/=\r\n//; print' mfm1dYJbFc_test.dc | wc -l
141
pourtant c'est le meme fichier,
y'a une seule chose que je le fais normalement avant le traitement de ce fichier , c est enlever ^M quand je le transfére du windows a unix. ( en éxutant un script dos2unix.sh)
voila j'ai exécuté les meme commande et voila le résultat :
# perl -ne 'print' mfm1dYJbFc_test.dc | wc -l
141
# perl -ne 's/=\r\n//; print' mfm1dYJbFc_test.dc | wc -l
141
pourtant c'est le meme fichier,
y'a une seule chose que je le fais normalement avant le traitement de ce fichier , c est enlever ^M quand je le transfére du windows a unix. ( en éxutant un script dos2unix.sh)
je voudrais juste savoir , comment exécuter la meme commande avec un sed sous windows ,
voila l'erreur qui m'affiche :
D:\Program Files\GnuWin32\bin>sed 's/=$//g' F0007913.dc
sed: -e expression #1, char 1: unknown command: `''
Merci d'avance