afficher le contenu d'une colonne

afficher le contenu d'une colonne - Shell/Batch - Programmation

Marsh Posté le 20-07-2012 à 08:48:48    

Bonjour,
 
J'ai un fichier qui dispose de n-colonne et pour une des colonnes,
je dois afficher qu'une partie de l'information pour la derniere colonne.
 
exemple de lignes du fichier :

Citation :

benoit xxx;site E;Commercial;France;Dijon;activite lundi : ventes activite mardi : achat activite mercredi : achat activite jeudi : achat/vente/meeting activite vendredi : clientèle


 
Je dois afficher l'activité du lundi au mardi par exemple :

Citation :

benoit xxx;site E;Commercial;France;Dijon;activite lundi : ventes activite mardi : achat


 
s'il s'agit du jeudi au vendredi :

Citation :

benoit xxx;site E;Commercial;France;Dijon;activite jeudi : achat/vente/meeting activite vendredi : clientèle


 
j'ai essayé avec un sed, mais cela m affiche toute la lignes,
par exemple pour l'activité du lundi au mardi

Code :
  1. sed -n '/activite lundi :/,/activite mercredi :/p'


 
Merci

Reply

Marsh Posté le 20-07-2012 à 08:48:48   

Reply

Marsh Posté le 20-07-2012 à 14:55:07    

salut,
 
couple ça avec un grep, ou alors fais le plutôt avec un awk...

Reply

Marsh Posté le 20-07-2012 à 15:46:25    

Salut,
 

Code :
  1. sed -n '/activite lundi :/,/activite mercredi :/p'

cette commande va afficher les lignes à partir de la première contenant <activite lundi>, jusquà la première contenant <activite mercredi>. Ce n'est pas ce que tu veux, si j'ai bien compris.
 
à mon avis, ce sera plus simple (parce que les commandes sont plus lisibles) en awk.

Reply

Marsh Posté le 23-07-2012 à 09:04:16    

j'aimerai bien le faire en awk
mais je ne vois pas trop comment
en sachant que la colonne, je la récupère déjà avec un awk.
"activite lundi : ..." correspond à mon $3 dans mon awk.
 
Un awk dans un awk, je ne sais pas trop si cela marche.

Reply

Marsh Posté le 23-07-2012 à 11:25:52    

Code :
  1. awk -F';' 'BEGIN{ J["lundi"]=2; J["mardi"]=3; J["mercredi"]=4; J["jeudi"]=5; J["vendredi"]=6}{split($6,a,"activite [^:]*: " ); for(j=J[d]; j<=J[f]; j++){printf("%s ", a[j])}print ""}' d="mardi" f="jeudi" fichier.in

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed