Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
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 16/01/2008, 20h41   #1
Invité régulier
 
Inscription : novembre 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 72
Points : 8
Points : 8
Par défaut problème pour supprimer des lignes d'un fichier

Bonjour,

J'ai une ligne commande qui devrait normalement me supprimer des lignes dans un fichier mais ca ne marche pas.

je l'ai faites en sed et en shell mais ca fait toujours la même chose à savoir que ca supprime toutes les lignes du fichier.


j'ai un fichier qui contient 2 lignes :
fic1
fic2

Ce que j'aimerai faire c'est supprimer par exemple la ligne fic2 dans mon fichier

J'ai script qui contient les 2 lignes de commandes suivantes

Code :
1
2
 
sed '/fic2/d' fichier.txt > fichier.txt
en gros je voudrais envoyer le résultat de cette commande dans mon fichier.txt qui devrai normalement contenir plus que fic1

C'est la que ca merde. Quand j'ouvre mon fichier il est vide .

de même lorsque j'effectue la commande :

Code :
1
2
 
grep -v fic2 fichier.txt > fichier.txt
Je ne comprend pas pourquoi le fichir est vide alors qu'il devrai contenir fic1.

Merci à ceux qui m'aideront.
NicoO_O est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 20h52   #2
Membre du Club
 
Inscription : mars 2006
Messages : 158
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 158
Points : 48
Points : 48
Salut,

et si tu ajoutes le chemin du répertoire qui contient ton fichier.txt ?

Code :
1
2
cd Repertoire
sed '/fic2/d' fichier.txt > fichier.txt
eZula est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 21h34   #3
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Ça dépend de la version de ton sed

Avec le sed du gnu, qui reconnaît l'option -i, la bonne syntaxe est la suivante :

Code :
sed -i '/fic2/d' fichier.txt

Avec le sed, qui ne reconnaît l'option -i, tu dois passer par un ficher intermédiaire (tmp).
La bonne syntaxe est la suivante :

Code :
1
2
sed '/fic2/d' fichier.txt > tmp
mv tmp fichier.txt
__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 21h55   #4
Invité régulier
 
Inscription : novembre 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 72
Points : 8
Points : 8
la solution avec sed -i était la bonne je te remerci.

J'ai encore une question à propos d'un script que je suis en train de réaliser.

J'ai toujours mon fichier mais cette fois ci j'ai un répertoire suivi des fichiers qu'il contient.

Par exemple :

fic1
fic2
rep1
Fic1DuRep1 Fic2DuRep1 ...
fic4
fic5
rep2
Fic1DuRep2 Fic2DuRep2 ...

Ce que j'aimerai faire dans mon script c'est qu'il liste les fichiers (pas tres compliqué) mais aussi lorsqu'il voit un répertoire il devra aller lister également tous les fichiers de ce répertoire

Voila j espere avoir été assez clair et encore merci pour votre aide et pour ceux qui m'aideront ^^.
NicoO_O est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 23h16   #5
Invité régulier
 
Inscription : novembre 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 72
Points : 8
Points : 8
je pense avoir trouvé une solutioon à mon problème seulement autre problème est apparu ^^.

Si jamais il y a d autres répertoires dans mon répertoire il faut refaire la même chose ^^.

Donc il faut une fonction récursive mais alors laca devient un ptiu peut car une fonction récursive en shell ou autre je ne sais pas trop comment m'y prendre dans mon cas ^^.
NicoO_O est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2008, 07h23   #6
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
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 546
Points : 7 776
Points : 7 776
Citation:
Envoyé par NicoO_O Voir le message
je pense avoir trouvé une solutioon à mon problème seulement autre problème est apparu ^^.

Si jamais il y a d autres répertoires dans mon répertoire il faut refaire la même chose ^^.

Donc il faut une fonction récursive mais alors laca devient un ptiu peut car une fonction récursive en shell ou autre je ne sais pas trop comment m'y prendre dans mon cas ^^.
find ./ -type f -exec sed .............. {} \;

-type f permet de ne traiter que les fichiers
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web