Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2677 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs

  [shell] Lire un fichier ligne par ligne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[shell] Lire un fichier ligne par ligne

n°655442
mr simon
Posté le 27-03-2005 à 15:32:08  profilanswer
 

Bonjour,
 
dans un script j'ai besoin de lire le fichier /etc/passwd ligne par ligne,
 
j'ai fait :
 
for ligne in `cat $FILE`
 
mais s'il ya un espace dans un ligne, il me "coupe" la ligne en deux.
 
Comment je peux faire ?
 
merci

mood
Publicité
Posté le 27-03-2005 à 15:32:08  profilanswer
 

n°655445
deather2
Posté le 27-03-2005 à 15:38:05  profilanswer
 

Pourquoi veut-tu le lire ligne/ligne ?
 
Tu peux néanmoins essayer:
 
cat /etc/passwd | tacommande

n°655454
mr simon
Posté le 27-03-2005 à 15:51:06  profilanswer
 

Bah voila ce que je voudrais faire, dans le fichier /etc/passwd ya le Prenom et le nom de l'utilisateur séparé par un espace, et j'aimerais dans mon script avoir Prénom.nom
 
Alors quand je fait cat /etc/passwd | cut -f5 -d ":", je récupère bien les noms, mais il me faut encore les relier entre eux, tout les prenoms nom sont séparés par des espaces.
 
Alros je pensais lire le fichier ligne par ligne, ensuite utiliser cut et hop le tour est joué, mais je ne sais pas comment je pourrais faire ça.
 
Merci

n°655457
deather2
Posté le 27-03-2005 à 15:54:29  profilanswer
 

Mhh... c'est un peu de bidouillage tout ça :)
si t'arrives à récupérer le champs "NOM Prenom", tu peux faire ça pour avoir les deux:
cut -d" " -f 1    -> Le nom
cut -d" " -f 2    -> Le prenom
soit:
NOM=`cat /etc/passwd | cut -f5 -d ":" | cut -d" " -f 1`.`cat /etc/passwd | cut -f5 -d ":" | cut -d" " -f 2`
 
Barbare :whistle:
 
Ceci dis ça répond pas à ton pb, je sais pas trop comment faire :/


Message édité par deather2 le 27-03-2005 à 15:54:48
n°655462
freds45
Posté le 27-03-2005 à 16:03:06  profilanswer
 

http://forum.hardware.fr/forum2.ph [...] 0&subcat=0

http://forum.hardware.fr/forum2.php?config=hardwarefr.inc&post=24667&cat=11&cache=&sondage=0&owntopic=0&p=1&trash=0&subcat=0


edit: oops ca marche plus :whistle:


Message édité par freds45 le 27-03-2005 à 16:04:52
n°655483
mr simon
Posté le 27-03-2005 à 16:50:04  profilanswer
 

ton "truc" ne marche pas, il me met la liste de "prénom" un point la liste des noms !!!
 

n°655486
Pillow
'cos the trees won't talk
Posté le 27-03-2005 à 16:59:05  profilanswer
 

cat /etc/passwd | cut -f5 -d ":" | tr " " .

n°655506
mr simon
Posté le 27-03-2005 à 17:19:47  profilanswer
 

merci pillow pour ton astuce !!!
 
et freds45
 
merci


Message édité par mr simon le 27-03-2005 à 17:29:07
n°655531
Zaib3k
Posté le 27-03-2005 à 18:11:19  profilanswer
 

modifie ton IFS


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
n°655534
mr simon
Posté le 27-03-2005 à 18:23:37  profilanswer
 

IFS ?

mood
Publicité
Posté le 27-03-2005 à 18:23:37  profilanswer
 

n°655535
Pillow
'cos the trees won't talk
Posté le 27-03-2005 à 18:25:24  profilanswer
 

IFS=" :"
while read -r a a a a n p a   #sale? où ça?
do
    echo $n.$p
done < /etc/passwd


 
mais il faut faire attention d'utiliser la bonne valeur pour $IFS dans la suite du script.


Message édité par Pillow le 27-03-2005 à 18:26:23
n°655536
deather2
Posté le 27-03-2005 à 18:34:48  profilanswer
 

mr simon a écrit :

ton "truc" ne marche pas, il me met la liste de "prénom" un point la liste des noms !!!


 

Citation :

[...]et j'aimerais dans mon script avoir Prénom.nom


 :whistle:

n°655538
lapiou
fuji s602z
Posté le 27-03-2005 à 18:39:58  profilanswer
 

while read a
do
 
    echo la ligne est $a
done

n°655614
weed
Posté le 27-03-2005 à 22:12:59  profilanswer
 

lapiou a écrit :

while read a
do
 
    echo la ligne est $a
done


je pense que le while reagit de la meme facon qu'un for...
Cela veut dire que si dans ta ligne tu as un espace, il va lire la première partie avant l'espace et ensuite une 2ème fois apres l'espace ...
 
Donc avec des espaces, cela ne lire pas ligne par ligne ....
 
je ne sais pas si la solution de pillow fonctionne, je ne connais pas la commande tr et je n'ai pas linux sous la main pour faire un man tr  
cat /etc/passwd | cut -f5 -d ":" | tr " " .
 
mais sinon tu as awk qui pourrait t'etre d'un grand secours en utilisant un sed pour supprimer les espaces.
 

n°655617
Pillow
'cos the trees won't talk
Posté le 27-03-2005 à 22:24:14  profilanswer
 

weed a écrit :

je pense que le while reagit de la meme facon qu'un for...
Cela veut dire que si dans ta ligne tu as un espace, il va lire la première partie avant l'espace et ensuite une 2ème fois apres l'espace ...
 
Donc avec des espaces, cela ne lire pas ligne par ligne ....

Là c'est le built-in read qui fait tout le travail, et read lit une ligne entière. De plus, si IFS vaut newline , for lit des lignes entières.
 

Citation :

je ne sais pas si la solution de pillow fonctionne, je ne connais pas la commande tr et je n'ai pas linux sous la main pour faire un man tr

tr remplace un caractère par un autre. tr a b est l'équivalent de sed 's/a/b/g'.


Message édité par Pillow le 27-03-2005 à 22:24:28
n°655727
YupYup
Non.
Posté le 28-03-2005 à 12:13:06  profilanswer
 

Méthode awk/sed :
cat /etc/passwd |awk -F ":" '{print $5}' |sed 's/ /./'


---------------
"The marketing guys said the HP-35 would be a failure because it was too small, and then we couldn't make them fast enough to meet the demand. The marketing folks don't know everything." - Bill Hewlett

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  [shell] Lire un fichier ligne par ligne

 

Sujets relatifs
Décompression fichier binCommande deleter un fichier dans konsole ?
copie de fichier cachés linux[Debian] Gnome + Gestionnaire de fichier
Lecteur audio pour lire du .wav en 24 bits.[ script shell ] petit coup de pouce?
copier de fichier/dossier avec knoppix ?lecture de fichier en ligne .avi
Je ne peux plus lire mes dvd 
Plus de sujets relatifs à : [shell] Lire un fichier ligne par ligne


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR