Chaîne de caractères avec sed ou autre
ced66666
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
ced66666 Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
ced66666 Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je dois faire quelque traitement sur un fichier ldif pour récupérer les informations sur un AD.
En exécutant ma commande ldifde pour importer mes objets, j'ai une erreur de syntaxe......
En regardant un peu,
j'ai une ligne avec
proxyAddresses:
x400:C=toto:A=tata:P=coucou..........
pour que la commande ldifde fonctionne, la ligne doit être la suivante
proxyAddresses: x400:C=toto:A=tata:P=coucou..........
c'est un vrai problème car le fichier comporte 2000 objets à importer.Je ne peux pas le faire manuellement
Avez-vous une idée pour réaliser ce genre de traitement c'est à dire fusionner les deux lignes pour obtenir qu'une seule ligne avec un espace entre proxyAddresses: et x400:C=toto:A=tata:P=coucou..........
pour obtenir
proxyAddresses: x400:C=toto:A=tata:P=coucou..........
je précise que le traitement ne doit se faire que sur les lignes
proxyAddresses: x400.........
j'ai essayé avec la commande sed mais je n'y arrive pas. Avez-vous une autre idée s'il vous plaît pour réaliser ce genre de traitement.
Merci par avance.
je dois faire quelque traitement sur un fichier ldif pour récupérer les informations sur un AD.
En exécutant ma commande ldifde pour importer mes objets, j'ai une erreur de syntaxe......
En regardant un peu,
j'ai une ligne avec
proxyAddresses:
x400:C=toto:A=tata:P=coucou..........
pour que la commande ldifde fonctionne, la ligne doit être la suivante
proxyAddresses: x400:C=toto:A=tata:P=coucou..........
c'est un vrai problème car le fichier comporte 2000 objets à importer.Je ne peux pas le faire manuellement
Avez-vous une idée pour réaliser ce genre de traitement c'est à dire fusionner les deux lignes pour obtenir qu'une seule ligne avec un espace entre proxyAddresses: et x400:C=toto:A=tata:P=coucou..........
pour obtenir
proxyAddresses: x400:C=toto:A=tata:P=coucou..........
je précise que le traitement ne doit se faire que sur les lignes
proxyAddresses: x400.........
j'ai essayé avec la commande sed mais je n'y arrive pas. Avez-vous une autre idée s'il vous plaît pour réaliser ce genre de traitement.
Merci par avance.
A voir également:
- Chaîne de caractères avec sed ou autre
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
- Chaine radio - Télécharger - Médias et Actualité
21 réponses
Salut,
je précise que le traitement ne doit se faire que sur les lignes
proxyAddresses: x400........
Pourquoi, il y a des lignes qui diffèrent ? A quel niveau (x400) ?
je précise que le traitement ne doit se faire que sur les lignes
proxyAddresses: x400........
Pourquoi, il y a des lignes qui diffèrent ? A quel niveau (x400) ?
J'anticipe...
$ cat plop proxyAddresses: x400:C=toto:A=tata:P=coucou.......... proxyAddresses: x500:C=toto:A=tata:P=coucou.......... $ sed '/^proxyAddresses:/{N;/\nx400/{s/\n/ /}}' plop proxyAddresses: x400:C=toto:A=tata:P=coucou.......... proxyAddresses: x500:C=toto:A=tata:P=coucou.......... $
merci
oui j'ai des lignes qui diffèrent. J'ai donné x400 pour exemple, j'ai regardé dans mon fichier, j'ai le même soucis avec le x500 en début de ligne aussi
Si je veux faire un traitement en masse c'est à dire x400 et x500 et autre, est ce que la commande sed fera l'affaire ?
C'est quoi la syntaxe si je suis avec l'éditeur vim
j'ai l'habitude de faire
:1;$ sed/.............................//g
Merci pour ton aide
oui j'ai des lignes qui diffèrent. J'ai donné x400 pour exemple, j'ai regardé dans mon fichier, j'ai le même soucis avec le x500 en début de ligne aussi
Si je veux faire un traitement en masse c'est à dire x400 et x500 et autre, est ce que la commande sed fera l'affaire ?
C'est quoi la syntaxe si je suis avec l'éditeur vim
j'ai l'habitude de faire
:1;$ sed/.............................//g
Merci pour ton aide
oui j'ai des lignes qui diffèrent. J'ai donné x400 pour exemple, j'ai regardé dans mon fichier, j'ai le même soucis avec le x500 en début de ligne aussi
Le problème est de savoir si il faut traiter toutes les lignes commençant par "proxyAddresses:" d'une part et ensuite si toutes les lignes qui suivent doivent être ajoutées et le cas échéant s'il faut s'assurer que la ligne à remonter doit commencer par "xnnn" sans tenir compte des "nnn" ???
Avec vim je ne sais pas, mais avec "sed" oui, d'autant qu'il est vraiment fait pour ce genre de traitement.
Le problème est de savoir si il faut traiter toutes les lignes commençant par "proxyAddresses:" d'une part et ensuite si toutes les lignes qui suivent doivent être ajoutées et le cas échéant s'il faut s'assurer que la ligne à remonter doit commencer par "xnnn" sans tenir compte des "nnn" ???
Avec vim je ne sais pas, mais avec "sed" oui, d'autant qu'il est vraiment fait pour ce genre de traitement.
oui effectivement, c'est bien ça:
il faut traiter toutes les lignes commençant par "proxyAddresses:" et la ligne suivante à remonter commence par x500 ou x400.
désolé, chui vraiment pas une bête avec ce genre de traitement.
Merci
il faut traiter toutes les lignes commençant par "proxyAddresses:" et la ligne suivante à remonter commence par x500 ou x400.
désolé, chui vraiment pas une bête avec ce genre de traitement.
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai essayé la commande comme ceci:
sed -i '/^proxyAddresses:/{N;/\nx400/{s/\n/ /}}' monfichier.ldf
la commande traite quelques lignes car j'ai encore des lignes qui commence par sous la forme:
proxAddresses:
x400:.............................
pourquoi la commande ne traite que quelques lignes et pas toutes les lignes ?
c pas évident
sed -i '/^proxyAddresses:/{N;/\nx400/{s/\n/ /}}' monfichier.ldf
la commande traite quelques lignes car j'ai encore des lignes qui commence par sous la forme:
proxAddresses:
x400:.............................
pourquoi la commande ne traite que quelques lignes et pas toutes les lignes ?
c pas évident
sinon est ce que tu peux si je raisonne comme ceci:
toutes les lignes commençant par x400 ou x500, je le la fusionne avec la ligne précédente pour obtenir le même résultat comme ceci
proxyAddresses: x400:C=toto:A=tata:P=coucou
toutes les lignes commençant par x400 ou x500, je le la fusionne avec la ligne précédente pour obtenir le même résultat comme ceci
proxyAddresses: x400:C=toto:A=tata:P=coucou
Fais une copie de ton fichier, puis lance cette commande :
Voila ce que ça devrait faire :
sed -i '/^proxyAddresses:/{N;/\nx[45]00/{s/\n/ /}}' fichier
Voila ce que ça devrait faire :
$ cat plop proxyAddresses: x400:C=toto:A=tata:P=coucou.......... proxyAddresses: x500:C=toto:A=tata:P=coucou.......... proxyAddresses: x600:C=toto:A=tata:P=coucou.......... proxyAddresses: x500:C=toto:A=tata:P=coucou.......... $ sed -i '/^proxyAddresses:/{N;/\nx[45]00/{s/\n/ /}}' plop $ cat plop proxyAddresses: x400:C=toto:A=tata:P=coucou.......... proxyAddresses: x500:C=toto:A=tata:P=coucou.......... proxyAddresses: x600:C=toto:A=tata:P=coucou.......... proxyAddresses: x500:C=toto:A=tata:P=coucou.......... $
en exécutant sed -i '/^proxyAddresses:/{N;/\nx[45]00/{s/\n/ /}}' fichier
je me retrouve toujours avec quelques lignes non traitées.
As-tu la solution si je raisonne avec toutes les lignes commençant par x400 ou x500
je me retrouve toujours avec quelques lignes non traitées.
As-tu la solution si je raisonne avec toutes les lignes commençant par x400 ou x500
oui je comprends,
demain je t'en verrai ca.
sinon peux tu me donner la syntaxe avec la commande sed pour ajouter un espace pour toutes les lignes qui comment par x500 ou x400 s'il te plaît ?
Je te remercie par avance
demain je t'en verrai ca.
sinon peux tu me donner la syntaxe avec la commande sed pour ajouter un espace pour toutes les lignes qui comment par x500 ou x400 s'il te plaît ?
Je te remercie par avance
nan nan le chevon ne fait pas partie de ligne,
j'aurai du symboliser l'environnement linux comme ceci $
$x400
$ x400
j'aurai du symboliser l'environnement linux comme ceci $
$x400
$ x400
j'ai essayé la commande est le résultat est correct, merci beaucoup.
J'aurai une question à te poser, toujours avec sed, est ce qu'il est possible de rajouter une une ligne vide entre deux blocs, je m'explique
voici la structure de mon fichier ldif
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
mail= toto@tata.fr
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
mail=essai@comment.com
je voudrais rajouter une ligne vide juste après l'attribut mail pour séparer le premier bloc et le second bloc et ainsi de suite pour obtenir le résultat suivant
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
mail= toto@tata.fr
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
mail=essai@comment.com
merci par avance pour ton aide
J'aurai une question à te poser, toujours avec sed, est ce qu'il est possible de rajouter une une ligne vide entre deux blocs, je m'explique
voici la structure de mon fichier ldif
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
mail= toto@tata.fr
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
mail=essai@comment.com
je voudrais rajouter une ligne vide juste après l'attribut mail pour séparer le premier bloc et le second bloc et ainsi de suite pour obtenir le résultat suivant
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
mail= toto@tata.fr
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
mail=essai@comment.com
merci par avance pour ton aide
salut,
j'ai essayé les deux commandes que tu m'as donné
sed 's/^mail=.*/&\n/' fichier
sed '/^mail=/{G}' fichier
et dans mon fichier, je n'ai pas de changement, il n'y pas de ligne vide entre les deux blocs.
le soucis vient d'où?
j'ai essayé les deux commandes que tu m'as donné
sed 's/^mail=.*/&\n/' fichier
sed '/^mail=/{G}' fichier
et dans mon fichier, je n'ai pas de changement, il n'y pas de ligne vide entre les deux blocs.
le soucis vient d'où?
toujours dans la même idée
peux tu me dire comment supprimer dans ce même fichier avec sed
toutes les lignes commençant par textEncodedORAAddres:
Merci pour ton aide
peux tu me dire comment supprimer dans ce même fichier avec sed
toutes les lignes commençant par textEncodedORAAddres:
Merci pour ton aide
Là j'ai cherché sur le FAQ et je n'ai pas trouvé la réponse.
Je me posais la question comment ajouter une ligne vide juste avant la chaîne de caractère trouvée.
je voudrais ajouter une ligne vide pour séparer les deux blocs mais en raisonnant différemment car j'ai constaté qu'en traitant mon fichier ldif, les deux blocs ne sont pas séparés car certain bloc ne se termine pas par mail=toto@tata.fr et donc sed ne réalise pas l'opération car ca ne match pas.
Donc je raisonne dans l'autre sens c'est à dire toute chaîne commençant par
dn: CN=, ajouter une ligne vide au dessus pour donner ce résultat :
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
mail= toto@tata.fr
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
GivenName: allo allo allo
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
GivenName: allo allo allo
mail=essai@comment.com
;) vi
début de commande
sed 's/^dn:.*//' comment dire ajouter une vide au dessus ?
Crois-tu que c'est faisable ?
Je me posais la question comment ajouter une ligne vide juste avant la chaîne de caractère trouvée.
je voudrais ajouter une ligne vide pour séparer les deux blocs mais en raisonnant différemment car j'ai constaté qu'en traitant mon fichier ldif, les deux blocs ne sont pas séparés car certain bloc ne se termine pas par mail=toto@tata.fr et donc sed ne réalise pas l'opération car ca ne match pas.
Donc je raisonne dans l'autre sens c'est à dire toute chaîne commençant par
dn: CN=, ajouter une ligne vide au dessus pour donner ce résultat :
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
mail= toto@tata.fr
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
GivenName: allo allo allo
dn: CN=........................
changetype: add
objetclass:................................
blabla
blabla
blabla
GivenName: allo allo allo
mail=essai@comment.com
;) vi
début de commande
sed 's/^dn:.*//' comment dire ajouter une vide au dessus ?
Crois-tu que c'est faisable ?
Bonjour,
merci pour votre réponse ça marche très bien.
j'ai du mal à faire fusionner toutes chaines commençant par
"x400:" ou "x500" la ligne précédente.
proxyAddresses:
x500:C=toto:A=tata:P=coucou..........
proxyAddresses:
x400:C=toto:A=tata:P=coucou..........
proxyAddresses:
X500:C=toto:A=tata:P=coucou........
pour obtenir ceci
proxyAddresses: x400:C=toto:A=tata:P=coucou..........
proxyAddresses: X500:C=toto:A=tata:P=coucou..........
textORAENCODED: x500:C=toto:A=tata:P=coucou..........
.................................................................
sed -i '/^[xX][45]00:/ ;)...............': comment lui dire fusionne à la ligne précédente
Je commence à prendre goût à la manipulation des chaines de caractères, on voit bien la puissance sous Linux/Unix.
Je te remercie par avance
merci pour votre réponse ça marche très bien.
j'ai du mal à faire fusionner toutes chaines commençant par
"x400:" ou "x500" la ligne précédente.
proxyAddresses:
x500:C=toto:A=tata:P=coucou..........
proxyAddresses:
x400:C=toto:A=tata:P=coucou..........
proxyAddresses:
X500:C=toto:A=tata:P=coucou........
pour obtenir ceci
proxyAddresses: x400:C=toto:A=tata:P=coucou..........
proxyAddresses: X500:C=toto:A=tata:P=coucou..........
textORAENCODED: x500:C=toto:A=tata:P=coucou..........
.................................................................
sed -i '/^[xX][45]00:/ ;)...............': comment lui dire fusionne à la ligne précédente
Je commence à prendre goût à la manipulation des chaines de caractères, on voit bien la puissance sous Linux/Unix.
Je te remercie par avance
j'ai du mal à faire fusionner toutes chaines commençant par "x400:" ou "x500" la ligne précédente.
Hein ? ;-((
Hein ? ;-((
désolé, j'ai écris trop vite:
j'ai du mal à fusionner toutes chaines commençant par
"x400:" ou "x500" à la ligne précédente. (faire remonter à la ligne du dessus).
Comme ceci:
proxyAddresses:
x500:C=toto:A=tata:P=coucou..........
proxyAddresses:
x400:C=toto:A=tata:P=coucou..........
proxyAddresses:
X500:C=toto:A=tata:P=coucou........
pour obtenir ceci
proxyAddresses: x400:C=toto:A=tata:P=coucou..........
proxyAddresses: X500:C=toto:A=tata:P=coucou..........
textORAENCODED: x500:C=toto:A=tata:P=coucou..........
.................................................................
Merci par avance
j'ai du mal à fusionner toutes chaines commençant par
"x400:" ou "x500" à la ligne précédente. (faire remonter à la ligne du dessus).
Comme ceci:
proxyAddresses:
x500:C=toto:A=tata:P=coucou..........
proxyAddresses:
x400:C=toto:A=tata:P=coucou..........
proxyAddresses:
X500:C=toto:A=tata:P=coucou........
pour obtenir ceci
proxyAddresses: x400:C=toto:A=tata:P=coucou..........
proxyAddresses: X500:C=toto:A=tata:P=coucou..........
textORAENCODED: x500:C=toto:A=tata:P=coucou..........
.................................................................
Merci par avance