Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications
Applications Questions sur l'utilisation d'applications, du shell, et des interfaces graphiques (KDE, Gnome, XFCE... )
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/08/2011, 10h44   #1
Membre à l'essai
 
Inscription : janvier 2011
Messages : 24
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 24
Points : 20
Points : 20
Par défaut [bach] suppresion de ligne avec sed

Bonjour,

Voila mon problème, je parcours un fichier txt contenant une liste de fichiers avec leur chemin, lorsque le fichier n'existe pas je voudrait supprimer la ligne du fichier txt.

voici mon code

Code :
1
2
3
4
5
6
7
8
9
10
fichier=monfichier.txt
while read line
do
if [ -f $line ]
then
... mes commande
else
sed -i -e '$line/d' $fichier
fi
done < $fichier
les lignes de mon fichier txt ressemble à cela:

/var/log/log_ws5000/test_03082011_10:30
/var/log/log_ws5000/test_03082011_10:35

Merci de votre aide
gogoth62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/08/2011, 11h00   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 536
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 536
Points : 7 749
Points : 7 749
suffit d'être séléctif sur ton sed :
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 11h24   #3
Membre à l'essai
 
Inscription : janvier 2011
Messages : 24
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 24
Points : 20
Points : 20
je n'ai pas d'erreur mais ça ne fonctionne pas.

J'ai mis

dans mon script et pour le fichier inexistant j'ai la ligne
Code :
sed -i -e /$line/d monfichier.txt
Je pense donc qu'il doit vouloir supprimer la ligne qui contient " $line ".
gogoth62 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 03/08/2011, 11h52   #4
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Tu as oublié les doubles quotes

Code :
sed -i "/$line/d" monfichier.txt
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/08/2011, 11h57   #5
Membre à l'essai
 
Inscription : janvier 2011
Messages : 24
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 24
Points : 20
Points : 20
désolé pour l'oublie des doubles quotes.

Maintenant j'ai un message d'erreur qui est:

sed: -e expression #1, char 61: expected newer version of sed
gogoth62 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 03/08/2011, 11h59   #6
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Essayes comme ça :

sed -i "\#$line#d" monfichier.txt
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/08/2011, 12h37   #7
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
Bonjour,

je n'utiliserais pas de else, en tout cas pas pour faire un sed.

si le fichier existe
alors
exécution de commandes
...
echo "nom fichier" >> /tmp/monTemp #ou ajout à une variable(-tableau)
#ou alors
#flag=1
finsi
mv /tmp/monTemp monFichier.txt #ou si flag, alors echo "$variable">monFichier.txt, finsi
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/08/2011, 13h03   #8
Membre à l'essai
 
Inscription : janvier 2011
Messages : 24
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 24
Points : 20
Points : 20
Citation:
Envoyé par zipe31 Voir le message
Essayes comme ça :

sed -i "\#$line#d" monfichier.txt
Super ça fonctionne.

N_BaH merci pour ta solution mais pour des raisons de simplicité je vais rester avec un set.

Merci
gogoth62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h20.


 
 
 
 
Partenaires

Hébergement Web