Shell, tester une ligne dans une boucle IF
Résolu/Fermé
Albator
-
22 févr. 2008 à 12:23
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 24 mars 2008 à 18:45
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 24 mars 2008 à 18:45
A voir également:
- Shell, tester une ligne dans une boucle IF
- Aller à la ligne dans une cellule excel - Guide
- Flash drive tester - Télécharger - Divers Utilitaires
- Tester son pc - Guide
- Site de vente en ligne particulier - Guide
- Partager photos en ligne - Guide
6 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
22 févr. 2008 à 13:37
22 févr. 2008 à 13:37
Salut,
sed '/anruid/ i\changetype: modify\nreplace: anruid';-))
Darkito
Messages postés
1191
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
545
22 févr. 2008 à 12:40
22 févr. 2008 à 12:40
Bonjour, c'est réalisable directement via la fonction sed
J'ai ajouté un "anruid" dans le fichier test pour vérifier que ça ne prenait que les débuts de ligne.
Darkito >cat totof dn: uid=TRIBOULET,ou=utilisateurs,o=urcam,dc=cnamts,dc=fr anruid: 0501341507012700014 site: 0000141507012700014 dn: uid=LHOTE,ou=utilisateurs,o=urcam,dc=cnamts,anruiddc=fr anruid: 0502041507012700014 site: 0000141507012700014 Darkito >sed 's@^anruid@changetype: modify\nreplace: anruid\nanruid@g' totof dn: uid=TRIBOULET,ou=utilisateurs,o=urcam,dc=cnamts,dc=fr changetype: modify replace: anruid anruid: 0501341507012700014 site: 0000141507012700014 dn: uid=LHOTE,ou=utilisateurs,o=urcam,dc=cnamts,anruiddc=fr changetype: modify replace: anruid anruid: 0502041507012700014 site: 0000141507012700014
J'ai ajouté un "anruid" dans le fichier test pour vérifier que ça ne prenait que les débuts de ligne.
Darkito
Messages postés
1191
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
545
>
Albator
22 févr. 2008 à 13:15
22 févr. 2008 à 13:15
Il y a un problème avec les \n ....
J'ai pas un 'sed' classique au boulot...
essaie en ajoutant "-e"
je ne sais pas du tout si ça vient de là...
J'ai pas un 'sed' classique au boulot...
essaie en ajoutant "-e"
sed -e 's@^anruid@changetype: modify\nreplace: anruid\nanruid@g'
je ne sais pas du tout si ça vient de là...
non, le -e n'y change rien
mais la commande SED est une très bonne piste
merci encore
mais la commande SED est une très bonne piste
merci encore
Darkito
Messages postés
1191
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
545
22 févr. 2008 à 13:31
22 févr. 2008 à 13:31
C'est clair que sed est très (très) utile.
Il y a Jipicy qui est sur CCM et qui connait très bien cette fonction.
Je vais essayer de voir avec lui d'où viens le problème.
Il y a Jipicy qui est sur CCM et qui connait très bien cette fonction.
Je vais essayer de voir avec lui d'où viens le problème.
Problème Résolu
Je n'ai pas trouvé de solution avec SED, je suis donc revenu à mon idée initiale
voici mon contournement :
while read ligne
do
echo $ligne|grep ^anruid >/dev/null
if [ $? -eq 0 ]
then
echo -e "changetype: modify\nreplace: anruid\n$ligne"
else
echo $ligne
fi
done</tmp/ATM-C2I.ldif
merci francky pour ta solution
Je n'ai pas trouvé de solution avec SED, je suis donc revenu à mon idée initiale
voici mon contournement :
while read ligne
do
echo $ligne|grep ^anruid >/dev/null
if [ $? -eq 0 ]
then
echo -e "changetype: modify\nreplace: anruid\n$ligne"
else
echo $ligne
fi
done</tmp/ATM-C2I.ldif
merci francky pour ta solution
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bobtipitt
Messages postés
61
Date d'inscription
dimanche 23 mars 2008
Statut
Membre
Dernière intervention
16 août 2010
2
24 mars 2008 à 17:14
24 mars 2008 à 17:14
Moi je dis que ce code est faux
il y a surement
une autre
manière de
le faire plus
simplement
il y a surement
une autre
manière de
le faire plus
simplement
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 mars 2008 à 17:24
24 mars 2008 à 17:24
Dans ce cas on attend d'être éclairé par tes lumières...
Merci d'avance ;-)
Merci d'avance ;-)
bobtipitt
Messages postés
61
Date d'inscription
dimanche 23 mars 2008
Statut
Membre
Dernière intervention
16 août 2010
2
24 mars 2008 à 18:31
24 mars 2008 à 18:31
Lol mais je sais que si sa marche c le bon
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 mars 2008 à 18:45
24 mars 2008 à 18:45
On attend toujours !!!
22 févr. 2008 à 14:00
mais j'obtiens ceci :
# sed 's/anruid/ i\changetype: modify\nreplace: anruid/g' ATM-C2I.ldif
dn: uid=TRIBOULET,ou=utilisateurs,o=urcam,dc=cnamts,dc=fr
ichangetype: modifynreplace: anruid: 0501341507012700014
site: 0000141507012700014
je n'ai pas (encore) trouvé l'option de SED qui permettrait d'interpréter les \n
grrr !!!
22 févr. 2008 à 14:06
/anruid/ signifie qu'on cherche le motif anruid au début
ensuite i\ insère la ligne avant.
Mais je pense que tu as quand même le problème de \n
22 févr. 2008 à 14:10
sed: command garbled: anruid/ i\changetype: modify\nreplace: anruid
moi pas comprendre :(
22 févr. 2008 à 15:53
Dans ce cas là, écrit ta syntaxe sur plusieurs lignes : ;-))