|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
En attente de confirmation mail
|
Bonsoir,
j'aurai encore besoin d'un coup de main sur linux, please ![]() on se trouve par défaut dans /bin/local/message/ et on a le fichier /bin/local/message/passwd décrivant l'ensemble des utilisateurs identifiés sur un système linux puis on nous demande de réaliser une copie de celui-ci vers un autre intitulé liste dans le répertoire /usr/local/resultat le fichier /usr/local/resultat/liste (crée par copie) contient les informations suivantes: jean: x:200:100:Jean DUFEU:/home/jean:/bin/ksh yves: x:209:300:Yves DUPONT:/home/yves:/bin/sh .... .... .... (il y a 6 lignes) Ce fichier est constitué de 6 lignes (enregistrement), chacune d'elles étant découpées en plusieurs champs dont le caractère de séparation est ":" alors pour faire la copie j'ai fait: cp /bin/local/message/passwd /usr/local/resultat/liste et ce que je ne comprends pas aussi dans la question, est ce que les 6 lignes je dois les rajouter à la copie ou c'est aussi le premier fichier qui les contient? puis on nous demande de remplacer le caractère séparateur ":" par le séparateur de champ "Z" et le résultat de cette modification doit être produit dans le fichier /usr/local/resultat/liste_remplace qui doit se présenter comme suit: jeanZxZ200Z100ZJean DUFEUZ/home/jeanZ/bin/ksh yvesZxZ209Z300ZYves DUPONTZ/home/yvesZ/bin/sh .... .... .... là je n'ai pas su comment faire Merci de m'aider. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 743 ![]() |
encore une fois sed est ton ami...
Code :
cat /usr/local/resultat/liste | sed "s+:+Z+g" > /usr/local/resultat/liste_remplace
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
00
|
|
|
#3 |
|
En attente de confirmation mail
|
merci
et est-ce que le premier fichier contient les enregistrement ou est-ce que je dois les rajouter? je bloque sur une autre question aussi, comment on peut réduire le contenue d'un fichier, par exemple dans la question posée dans cet exercice, on nous demande d'appliquer les instructions nécessaires à la production d'un autre fichier /usr/local/resultat/liste_reduite contenant seulement deux lignes à partir du fichier /usr/local/resultat/liste_remplace ?? |
|
|
00
|
|
|
#4 | ||
|
Membre habitué
![]() Inscription : janvier 2007 Messages : 148 ![]() |
Tu dois prendre 2 lignes au pif ?
Y'a une commande qui s'appel head qui prend un echantillon du début d'un flux, tu as aussi la commande tail qui prend un echantillon de la fin d'un flux. Donc pour récupérer les deux premières ligne tu peux faire : Code :
|
||
|
|
00
|
|
|
#5 |
|
En attente de confirmation mail
|
Merco Delwyn pour la réponse
les deux lignes que je dois mettre dans le fichier_réduit se trouvent au milieu CSPLIT ne fait pas ça? y a t-il un moyen de prendre seulement une partie de la ligne? ex: dans le fichier original: jean: x:200:100:Jean DUFEU:/home/jean:/bin/ksh dans un autre fichier: Jean DUFEU/bin/ksh |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : janvier 2007 Messages : 148 ![]() |
Pour récupérer les lignes du milieu sur un fichier de 6 lignes, ca voudrait dire qu'il te faut les lignes 3 et 4.
On pourrait dire que ce sont les deux dernière lignes, des 4 première lignes non ? =) Ensuite pour ce qui est de récupérer les 3 champs, tu n'as pas du chercher beaucoup, le fichier passwd est souvent utiliser pour l'exemple. Mais je pense qu'un : devrait arranger ca Je te renvoie par la |
|
|
00
|
|
|
#7 |
|
En attente de confirmation mail
|
Bonsoir,
Merci beaucoup pour les réponse. est-ce que je dois faire au moins deux fichiers pour avoir les deux lignes du milieu? ou est-ce que je pourrai combiner head et tail ? |
|
|
00
|
|
|
#8 | ||
|
Membre habitué
![]() Inscription : janvier 2007 Messages : 148 ![]() |
Tu peux faire le tout en une seul opération via des pipe, qui redirige les flux output d'une commande vers l'input d'une autre.
Code :
la commande cat affiche tout le fichier à l'écran grace au pipe | plutot que d'aller vers l'ecran (sortie standard, output) je redirige cette sortie en entré standard (inpput) de la commande head -n4 qui va a son tour afficher les 4 premieres ligne du flux recu, pour les envoyer vers la commande tail -n2 qui va prendre les deux dernières ligne du flux recu ( soit les 4 premieres ligne ). Enfin on redirige le flux vers un fichier via > , ce qui ecrase le fichier existant, >> aurait ajouté les ligne en fin de fichier si celui-ci existait, ou l'aurait créé s'il n'existait pas. |
||
|
|
00
|
|
|
#9 | |||
|
En attente de confirmation mail
|
Citation:
|
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com