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

 


Dernière réponse
Sujet : [shell] Lire un fichier ligne par ligne
YupYup Méthode awk/sed :
cat /etc/passwd |awk -F ":" '{print $5}' |sed 's/ /./'

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
YupYup Méthode awk/sed :
cat /etc/passwd |awk -F ":" '{print $5}' |sed 's/ /./'
Pillow

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'.

weed

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.
 

lapiou while read a
do
 
    echo la ligne est $a
done
deather2

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:

Pillow

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.

mr simon IFS ?
Zaib3k modifie ton IFS
mr simon merci pillow pour ton astuce !!!
 
et freds45
 
merci
Pillow

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

mr simon ton "truc" ne marche pas, il me met la liste de "prénom" un point la liste des noms !!!
 
freds45 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:

deather2 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 :/
mr simon 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
deather2 Pourquoi veut-tu le lire ligne/ligne ?
 
Tu peux néanmoins essayer:
 
cat /etc/passwd | tacommande
mr simon 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

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