Commande awk : alimenter un fichier et afficher son contenu - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 24-10-2006 à 09:31:05
A essayer (je peux pas tester, mais ça devrait fonctionner en corrigeant peut-être un peu) :
|
la commande tee permet de rediriger (sans supprimer l'affichage, donc pas comme > ) la sortie standard vers un fichier. Ensuite, ton grep peut très bien se passer sur la sortie standard. Ce que tu faisais est un peu étrange car tu fais un | grep alors que tu n'as rien en sortie, mais tu lui donnes quand même un fichier à traiter ...
Le système de pipe permet de capturer la sortie et de la traiter par la commande du pipe, rien d'autre ...
edit: je me demande aussi si ta variable somme est bien nécessaire, il me semble que la variable spéciale $. pourrait convenir (à vérifier aussi). Pas besoin de faire de somme ou quoi que ce soit dessus, elle est incrémentée à chaque fois que awk traite une ligne du fichier
Marsh Posté le 24-10-2006 à 09:41:24
ok je te remercie pour tout ces précieux renseignements.
Ca fonctionne !!!
Par contre j'ai pas bien compris le coup de l'increment pour la variable $.
Je croyais que les enregistrements etaient stockés ds une variable $0 mais je vois pas comment l'incrémenter autrement que par une variable somme de chaque ligne.
Marsh Posté le 23-10-2006 à 19:28:42
bonjour
Je suis à la recherche d'une commande qui passe par awk , qui crée un fichier et qui sur la meme commande nous affichent ce qu'il y a ds ce fichier.
Voilà le script en question , on suppose que le fichier listuser n'existe pas au moment du lancement de la commande :
awk -F: '
BEGIN{OFS="\t";somme=0}
{if ($7=="/bin/bash" )
{print "nom du compte",$1, "numero du compte",$3;somme=somme+1}}
END{print "nombre de compte =",somme}' /etc/passwd > listuser | grep nombre listuser
Je pensais qu'en faisant ca le grep allait me donnait la ligne ou le mot nombre est affiché mais ca marche pas ; car le je pense qu'au moment de l'execution du grep listuser n'est pas crée.
Si vous avez une idée de la commande à taper à la place du grep , merci d'avance.
ps : j'ai aussi essayé avec sed mais ca n'a pas marché