(sed) Enlever le
Résolu
titexe
Messages postés
55
Statut
Membre
-
titexe Messages postés 55 Statut Membre -
titexe Messages postés 55 Statut Membre -
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 le mode sécurisé - Guide
- Comment enlever le rond bleu sur whatsapp - Guide
- Enlever pub youtube - Accueil - Streaming
- Enlever liste déroulante excel - Guide
- Enlever le mot de passe windows 10 - Guide
21 réponses
- 1
- 2
Suivant
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,
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)
- 1
- 2
Suivant
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