Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[script / urgent] Pb suppression ligne d'un fichier
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
netman
Apprentice
Apprentice


Joined: 03 Oct 2003
Posts: 204
Location: France - Sud

PostPosted: Tue Aug 24, 2004 2:59 pm    Post subject: [script / urgent] Pb suppression ligne d'un fichier Reply with quote

Hola ca faisait longtemsp :D

retour de vacance oblige petit mais vraimeent petit soucis mais qui me fait bien chier . . .

Je voudrait en fait automatise la suppression d'un alias dans mon fichier /etc/mail/aliases quand je supprime mon user et voici donc ce qe j'ai fait :

Code:
#!/bin/bash

fichier=""
for ligne in $(sudo cat /etc/mail/aliases)
do
        if test $(echo $ligne | cut -f1 -d":") != $1
        then
                fichier=$fichier$ligne
        fi
done
sudo echo $fichier > /etc/mail/aliases
# postalias /etc/mail/aliases
# postfix reload

exit


Ben mon pb c que ca marche pas.
Les ligne renvoye par la boucle for ne sont pas des lignes entieres et me renvoie en fait une ligne a chaque fois qu'il croise un : fin un truc de fou quoi.

Si qlq'un pouvais me file un coup de main ca serait cool merci.

donc pour resume : je veux supprimer la ligne de mon fichier qui comprend la valeur $1 que j'envoie en parametre avec mon script.

Voila merci d'avance +++
Back to top
View user's profile Send private message
guilc
Bodhisattva
Bodhisattva


Joined: 15 Nov 2003
Posts: 3326
Location: Paris - France

PostPosted: Tue Aug 24, 2004 3:38 pm    Post subject: Reply with quote

hum, un
Code:
sed -si "s/^.*monuser.*$//g" /etc/mail/aliases
devrait faire l'affaire ;)
_________________
Merci de respecter les règles du forum.

Mon site perso : https://www.xwing.info
Mon PORTDIR_OVERLAY : https://gentoo.xwing.info ou layman -a xwing
Back to top
View user's profile Send private message
sireyessire
Advocate
Advocate


Joined: 20 Mar 2003
Posts: 2991
Location: back in Paris, France

PostPosted: Tue Aug 24, 2004 3:42 pm    Post subject: Reply with quote

le problème c'est que de toute façon là tu renvoie dans ton fichier une seule ligne avec tout tes autres alias.
je te propose:
Code:

#!/bin/bash
tmp_file="/tmp/alias.tmp"
#on vire le fichier temp s'il existe
if(test -e $tmp_file)
then
       rm $tmp_file
fi
echo "Removing "$1" from /etc/alias"
#scanning
for ligne in `sudo cat /etc/mail/aliases`
do
        if( test $(echo $ligne | cut -f1 -d":") != $1)
        then
                echo $ligne>>$tmp_file
        fi
done
#on copie le résultat dans le fichier alias
sudo mv $tmp_file /etc/mail/alias
#on sort
echo $1" removed from /etc/mail/alias"
exit


pour garder ton truc, mais je pense que sed doit faire ça tout seul :wink:

[EDIT] cramé par guilc
_________________
I never think of the future. It comes soon enough.
Albert Einstein

Try simpler first
Shockley
Back to top
View user's profile Send private message
netman
Apprentice
Apprentice


Joined: 03 Oct 2003
Posts: 204
Location: France - Sud

PostPosted: Wed Aug 25, 2004 2:02 pm    Post subject: Reply with quote

Ah ben ouais je pense que la je vais quand meme utilise sed :D

On va pas reinvente l'eau chaude :D

Merci pour le coup de main.

PS j'aurais bien repondu avant mais hier soir pas le tps et ce matin en reunion :D

++

EDIT : Ca marche nickel sauf qu'il me laisse en fait la ligne avec rien dessus . . .

Mais ca risque de vite foutre le bordel . . .

Y aurait un moyen de supprimer aussi le retour chariot avec histoire qu'il y ai pas des espaces dans mes alias . . .
Back to top
View user's profile Send private message
Zentoo
Apprentice
Apprentice


Joined: 18 Nov 2002
Posts: 195
Location: /dev/console

PostPosted: Thu Aug 26, 2004 8:02 pm    Post subject: Reply with quote

8) HE ben tu peux toujours filtrer ton fichier avec grep pour enlever les lignes vides:

Code:
 grep -v "^$" ton_fichier > nouveau_fichier_sans_lignes_vides


regarde les options de grep pour voir si tu peux le faire "in place" c'est a dire sans passer par un autre fichier d'ailleurs pour ton probleme initial tu peux faire un
Code:
 sed -i -e "s/blabla//g" ton_fichier
ce qui te permets d'eviter un fichier temporaire.

Voili voilou...
Back to top
View user's profile Send private message
neysx
Retired Dev
Retired Dev


Joined: 27 Jan 2003
Posts: 795

PostPosted: Thu Aug 26, 2004 9:26 pm    Post subject: Reply with quote

netman wrote:
Ah ben ouais je pense que la je vais quand meme utilise sed :D
On va pas reinvente l'eau chaude :D
Ben non.
netman wrote:
EDIT : Ca marche nickel sauf qu'il me laisse en fait la ligne avec rien dessus . . .
Y aurait un moyen de supprimer aussi le retour chariot avec histoire qu'il y ai pas des espaces dans mes alias . . .
C'est parce que tu remplaces une expression rationnelle par rien du tout au lieu d'effacer la ligne qui contient l'expression recherchée. Il suffit de
Code:
sed -i '/EtZou/d' /etc/mail/aliases
Fais bien attention à l'expression que tu passes, car /toto/ supprimera aussi les lignes avec tititoto et tototutu. Une expression du genre /^etZou:/ serait peut-être à conseiller ;-)
L'accent circonflexe ancre la recherche au début de la ligne et les deux-points font partie de la chaîne recherchée.
Back to top
View user's profile Send private message
netman
Apprentice
Apprentice


Joined: 03 Oct 2003
Posts: 204
Location: France - Sud

PostPosted: Fri Aug 27, 2004 11:10 am    Post subject: Reply with quote

ahhh merci je vais tester ca de ce pas :D

Merci pour le tuyau ! !!
Back to top
View user's profile Send private message
br0mGreV
Apprentice
Apprentice


Joined: 28 Jul 2004
Posts: 265
Location: Paris, France

PostPosted: Fri Aug 27, 2004 12:19 pm    Post subject: Reply with quote

ou bien un bon vieux grep -v :

Code:
cat file | grep -v "^toto:"


[edit]bon d'accord, déjà ennoncé plus pour supprimer les lignes vides, mais autant utiliser ca pour parser directement le fichier[/edit]
_________________
Rien n'est éternel, pas même les problèmes...
Back to top
View user's profile Send private message
neysx
Retired Dev
Retired Dev


Joined: 27 Jan 2003
Posts: 795

PostPosted: Fri Aug 27, 2004 12:41 pm    Post subject: Reply with quote

br0mGreV wrote:
ou bien un bon vieux grep -v :
Code:
cat file | grep -v "^toto:"

[edit]bon d'accord, déjà ennoncé plus pour supprimer les lignes vides, mais autant utiliser ca pour parser directement le fichier[/edit]
La question est de savoir comment supprimer une ligne d'un fichier et si tu fais cat file | grep -v "^toto:" >file, tu vas supprimer un peu plus que la ligne ;-)
Back to top
View user's profile Send private message
br0mGreV
Apprentice
Apprentice


Joined: 28 Jul 2004
Posts: 265
Location: Paris, France

PostPosted: Fri Aug 27, 2004 12:53 pm    Post subject: Reply with quote

hmmpf,

vais reviser mes standard alors.

Dommage que je n'ai pas pu vérifier avant ( :oops: shame on me*)






[* : terme anglais signifiant : Honte sur moi ]
_________________
Rien n'est éternel, pas même les problèmes...
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum