Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
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 28/09/2008, 19h35   #1
Membre régulier
 
Inscription : février 2005
Messages : 160
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2005
Messages : 160
Points : 75
Points : 75
Par défaut arguments d'après lignes d'un fichier

Bonjour,

comment fait-on pour lire chaque ligne d'un fichier (contenant 2 arguments par ligne) dans un script sh ?

De manière à faire, par exemple cp $1 $2 d'après list.lst qui contient :
/home/test1.conf /duplicate/home/test1.conf
/var/liste /duplicate/var/liste

Merci.
talvins est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2008, 10h16   #2
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 502
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 502
Points : 9 685
Points : 9 685
Bonjour,

Ce que tu souhaites est faisable avec awk (outil qui permet de découper chaque ligne d'un fichier par colonne) :

Code :
awk '{ print $1 " " $2 }' mon_fichier
Cependant, si ton fichier ne contient que deux arguments et que tu veux faire une copie toujours du premier vers le second, alors tu n'as pas besoin de awk :

Code :
1
2
3
4
5
 
for i in `cat mon_fichier`
do
cp $i
done
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2008, 10h21   #3
Membre actif
 
Inscription : juillet 2008
Messages : 174
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 174
Points : 184
Points : 184
Bonjour,

Avec sh je ne sais pas, mais bash propose la commande interne read.

HTH
Didier
dtrosset est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2008, 11h01   #4
Membre éprouvé
 
Avatar de Leeloo_Multiboot
 
Administrateur Unix/Linux
Inscription : avril 2008
Messages : 417
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Administrateur Unix/Linux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2008
Messages : 417
Points : 482
Points : 482
Citation:
Avec sh je ne sais pas, mais bash propose la commande interne read.
Cela revient au même :

Code :
1
2
3
4
cat mon_fichier | while read line
do
cp $line
done
__________________
Citation:
Près des cîmes, loin des cons...
Leeloo_Multiboot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2008, 17h02   #5
Membre régulier
 
Inscription : février 2005
Messages : 160
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2005
Messages : 160
Points : 75
Points : 75
Citation:
Envoyé par gangsoleil Voir le message
Bonjour,

Ce que tu souhaites est faisable avec awk (outil qui permet de découper chaque ligne d'un fichier par colonne) :

Code :
awk '{ print $1 " " $2 }' mon_fichier
Cependant, si ton fichier ne contient que deux arguments et que tu veux faire une copie toujours du premier vers le second, alors tu n'as pas besoin de awk :

Code :
1
2
3
4
5
 
for i in `cat mon_fichier`
do
cp $i
done
awk sera très bien. J'ai pris cp comme example, mais les 2 arguments ne sont pas à la suite.

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



Fuseau horaire GMT +2. Il est actuellement 06h38.


 
 
 
 
Partenaires

Hébergement Web