Sed substitute
Résolu/Fermé
tht123
Messages postés
72
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
10 janvier 2009
-
19 juin 2007 à 22:14
tht123 Messages postés 72 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 10 janvier 2009 - 21 juin 2007 à 08:58
tht123 Messages postés 72 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 10 janvier 2009 - 21 juin 2007 à 08:58
A voir également:
- Sed substitute
- Sed supprimer ligne commençant par ✓ - Forum Linux / Unix
- Indirect substitute ✓ - Forum Excel
- Sed supprimer retour chariot ✓ - Forum Programmation
- Remplacez le mot sed par le mot mais dans tout le texte. combien de caractères contient le document suite à cette modification (en incluant les espaces) ? - Guide
- Commande sed pour remplacer du texte ✓ - Forum Linux / Unix
8 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
19 juin 2007 à 22:58
19 juin 2007 à 22:58
Salut,
Bon perso déjà l'expression primaire ressemblerait plutôt à ça :
Ensuite histoire qu'on s'entende bien, peux-tu s'il te plaît poster un bout de ton fichier d'entrée ainsi qu'un aperçu du résultat escompté, merci.
;-))
Bon perso déjà l'expression primaire ressemblerait plutôt à ça :
sed -r 's/[ ]{5,}/;/g'Mais bon si ça marche chez toi...
Ensuite histoire qu'on s'entende bien, peux-tu s'il te plaît poster un bout de ton fichier d'entrée ainsi qu'un aperçu du résultat escompté, merci.
;-))
tht123
Messages postés
72
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
10 janvier 2009
20 juin 2007 à 09:14
20 juin 2007 à 09:14
Bonjour jipicy et les autres!!!
1) J'ai esayé ton code et là où le mien fonctionne le tiens semble remplaccer chaque espace par un ";" et donc quand j'ai 5 espaces j'ai : ;;;;; .
2) Voilà un exemple que souhaite réaliser :
Avant traitement :
Ref0044 arezdvfhjfugyuo zz dat1 1236 dat2 8886 dat3 9999
Ref0114 arezdvfjgdfkhgk mm dat1 1236 dat2 8886 dat3 9999
Ref0124 arrrrrruioyhyugi er dat1 1236 dat2 8886 dat3 9999
Après traitement :
Ref0044 arezdvfhjfugyuo zz dat1;1236;dat2;8886;dat3;9999
Ref0114 arezdvfjgdfkhgk mm dat1;1236;dat2;8886;dat3;9999
Ref0124 arrrrrruioyhyugi er dat1;1236;dat2;8886;dat3;9999
Voilà donc un exmple, j'espère avoi été plus clair
Merci.
1) J'ai esayé ton code et là où le mien fonctionne le tiens semble remplaccer chaque espace par un ";" et donc quand j'ai 5 espaces j'ai : ;;;;; .
2) Voilà un exemple que souhaite réaliser :
Avant traitement :
Ref0044 arezdvfhjfugyuo zz dat1 1236 dat2 8886 dat3 9999
Ref0114 arezdvfjgdfkhgk mm dat1 1236 dat2 8886 dat3 9999
Ref0124 arrrrrruioyhyugi er dat1 1236 dat2 8886 dat3 9999
Après traitement :
Ref0044 arezdvfhjfugyuo zz dat1;1236;dat2;8886;dat3;9999
Ref0114 arezdvfjgdfkhgk mm dat1;1236;dat2;8886;dat3;9999
Ref0124 arrrrrruioyhyugi er dat1;1236;dat2;8886;dat3;9999
Voilà donc un exmple, j'espère avoi été plus clair
Merci.
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
20 juin 2007 à 09:34
20 juin 2007 à 09:34
Voilà donc un exmple, j'espère avoi été plus clair
Dans les explications oui mais pas dans les exemples !!! On voit pas les espaces ;-(
Voilà à quoi ressemble ton fichier, tous les espaces sont identiques
Merci ;-))
Dans les explications oui mais pas dans les exemples !!! On voit pas les espaces ;-(
Voilà à quoi ressemble ton fichier, tous les espaces sont identiques
Ref0044 arezdvfhjfugyuo zz dat1 1236 dat2 8886 dat3 9999 Ref0114 arezdvfjgdfkhgk mm dat1 1236 dat2 8886 dat3 9999 Ref0124 arrrrrruioyhyugi er dat1 1236 dat2 8886 dat3 9999Alors que si il existe des tabulations ou plus d'un espace, on verra :
Ref0044 arezdvfhjfugyuo zz dat1 1236 dat2 8886 dat3 9999 Ref0114 arezdvfjgdfkhgk mm dat1 1236 dat2 8886 dat3 9999 Ref0124 arrrrrruioyhyugi er dat1 1236 dat2 8886 dat3 9999Colles tes exemples entre les balises "code" (le bouton Code) s'il te plaît. ou alors poste sur Cjoint.
Merci ;-))
tht123
Messages postés
72
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
10 janvier 2009
20 juin 2007 à 10:28
20 juin 2007 à 10:28
<code>
Avant traitement :
Ref0044 arezdvfhjfugyuo zz dat1 1236 dat2 8886 dat3 9999
Ref0114 arezdvfjgdfkhgk ee dat1 1236 dat2 8886 dat3 9999
Ref0124 arrrrrruioyhyugi er dat1 1236 dat2 8886 dat3 9999
Après traitement :
Ref0044 arezdvfhjfugyuo zz dat1;1236;dat2;8886;dat3 9999
Ref0114 arezdvfjgdfkhgk aa dat1;1236;dat2;8886;dat3 9999
Ref0124 arrrrrruioyhyugi er dat1;1236;dat2;8886;dat3 9999
Efait, je ne remplace que les espaces à partir du 60ème caratère!
BAT
Avant traitement :
Ref0044 arezdvfhjfugyuo zz dat1 1236 dat2 8886 dat3 9999
Ref0114 arezdvfjgdfkhgk ee dat1 1236 dat2 8886 dat3 9999
Ref0124 arrrrrruioyhyugi er dat1 1236 dat2 8886 dat3 9999
Après traitement :
Ref0044 arezdvfhjfugyuo zz dat1;1236;dat2;8886;dat3 9999
Ref0114 arezdvfjgdfkhgk aa dat1;1236;dat2;8886;dat3 9999
Ref0124 arrrrrruioyhyugi er dat1;1236;dat2;8886;dat3 9999
Efait, je ne remplace que les espaces à partir du 60ème caratère!
BAT
tht123
Messages postés
72
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
10 janvier 2009
20 juin 2007 à 10:33
20 juin 2007 à 10:33
Avant traitement : Ref0044 arezdvfhjfugyuo zz dat1 1236 dat2 8886 dat3 9999 Ref0114 arezdvfjgdfkhgk mm dat1 1236 dat2 8886 dat3 9999 Ref0124 arrrrrruioyhyugi er dat1 1236 dat2 8886 dat3 9999 Après traitement : Ref0044 arezdvfhjfugyuo zz dat1;1236;dat2;8886;dat3 9999 Ref0114 arezdvfjgdfkhgk mm dat1;1236;dat2;8886;dat3 9999 Ref0124 arrrrrruioyhyugi er dat1;1236;dat2;8886;dat3 9999
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tht123
Messages postés
72
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
10 janvier 2009
20 juin 2007 à 10:40
20 juin 2007 à 10:40
oups oups$
https://www.cjoint.com/?gukOdcvY5u
https://www.cjoint.com/?gukOdcvY5u
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
20 juin 2007 à 13:34
20 juin 2007 à 13:34
[jp@MDK tmpfs]$ cat exemple.txt Ref0044 arezdvfhjfugyuo zz dat1 1236 dat2 8886 dat3 9999 Ref0044 arezdvfhjfugyuo zz dat1 1236 dat2 8886 dat3 9999 Ref0044 arezdvfhjfugyuo zz dat1 1236 dat2 8886 dat3 9999 [jp@MDK tmpfs]$ sed -e :loop -e 's/^\(.\{53,\}\)[ ]/\1;/;tloop' -e 's/;\+/;/g' exemple.txt Ref0044 arezdvfhjfugyuo zz dat1;1236;dat2;8886;dat3;9999 Ref0044 arezdvfhjfugyuo zz dat1;1236;dat2;8886;dat3;9999 Ref0044 arezdvfhjfugyuo zz dat1;1236;dat2;8886;dat3;9999 [jp@MDK tmpfs]$;-))
tht123
Messages postés
72
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
10 janvier 2009
21 juin 2007 à 08:30
21 juin 2007 à 08:30
Merci jipicy,
Pourrais tu m'expliquer ce code stp?? Afin que je puisse comprendre et evoluer un peu plus!
(Je pourrais ainsi la modifier pour qu'elle remplace par ; quà partir du moment où j'ai min 3 espaces.., car ici elle remplace tous les espaces..)
sed -e :loop -e 's/^\(.\{53,\}\)[ ]/\1;/;tloop' -e 's/;\+/;/g' exemple.txt
1) LE -e indique à sed d'exécuter les commandes en PIPE;
2) :loop est un LABEL sur lequel on boucle grace à tloop
3) Sed "MATCHES" tous les caractères depuis le début de ligne jusqu'au 53ème
4) \1; ===> ????????????????????????????????????
5) ;\+ ===> ????????????????????????????????????
BAT, merci
Pourrais tu m'expliquer ce code stp?? Afin que je puisse comprendre et evoluer un peu plus!
(Je pourrais ainsi la modifier pour qu'elle remplace par ; quà partir du moment où j'ai min 3 espaces.., car ici elle remplace tous les espaces..)
sed -e :loop -e 's/^\(.\{53,\}\)[ ]/\1;/;tloop' -e 's/;\+/;/g' exemple.txt
1) LE -e indique à sed d'exécuter les commandes en PIPE;
2) :loop est un LABEL sur lequel on boucle grace à tloop
3) Sed "MATCHES" tous les caractères depuis le début de ligne jusqu'au 53ème
4) \1; ===> ????????????????????????????????????
5) ;\+ ===> ????????????????????????????????????
BAT, merci
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 juin 2007 à 08:49
21 juin 2007 à 08:49
Re-
4) \1 ===> Fait référence à la 1ère sous-expression.
Une sous-expression est une partie d'expression régulière que l'on souhaite réutiliser dans la chaîne de remplacement, elle est délimitée par des parenthèses protégées (ou pas si on utilise le switch "-r").
Ainsi "\1" fait référence à la 1ère, "\2" à la seconde, etc...
5) ;\+ ===> Une ou plusieurs occurrence(s) du caractère précédent. Équivalent de "\{1,\}"
4) \1 ===> Fait référence à la 1ère sous-expression.
Une sous-expression est une partie d'expression régulière que l'on souhaite réutiliser dans la chaîne de remplacement, elle est délimitée par des parenthèses protégées (ou pas si on utilise le switch "-r").
Ainsi "\1" fait référence à la 1ère, "\2" à la seconde, etc...
5) ;\+ ===> Une ou plusieurs occurrence(s) du caractère précédent. Équivalent de "\{1,\}"
tht123
Messages postés
72
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
10 janvier 2009
21 juin 2007 à 08:58
21 juin 2007 à 08:58
MERCI+++
BONNE JOURNEE
BONNE JOURNEE