Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
ksh et awk
Envoyé par: romain_95

Bonjour,

j'essaye d'afficher le contenu du premier champ d'un texte le tout ligne par ligne via awk

voici ce que je fait :

#!/bin/ksh
fichier_conf=/home/scripts/process.cfg
while read ligne
do
 process=awk '{print $1}' $fichier_conf
 echo $process
done < $fichier_conf

seulement, j'ai une belle erreur :

./verif_process.ksh[5]: {print $1}: not found [Aucun fichier ou répertoire de ce type]
awk
./verif_process.ksh[5]: {print $1}: not found [Aucun fichier ou répertoire de ce type]
awk
./verif_process.ksh[5]: {print $1}: not found [Aucun fichier ou répertoire de ce type]
awk

je pense qu'il sagit d'une erreur a cause des guillement simple. j'ai essayé pas mal de trucs mais sans resultat sad smiley

Poste le Thursday 29 November 2007 20:36:59
Répondre     Citer    
Re: ksh et awk
Envoyé par: romain_95

bon, je dois mal m'y prendre sad smiley

en fait, j'ai un fichier de conf de ce type :

kde:1
sendmail:1
sbin:8

et je souhaiterais que mon script verifie qu'il y a bien 1 process kde, 1 sendmail et 8 sbin

je veux donc parcourir le fichier, recuperer les deux variables de la premiere ligne, effectuer mon teste,et passer à la ligne 2

ainsi de suite

Quelqu'un aurait une piste ??

Poste le Thursday 29 November 2007 22:35:14
Répondre     Citer    
Re: ksh et awk
Envoyé par: tellmewhy

Bonjour romain_95 , :-)

En attendant mieux,


J'ai mis délibérément un chiffre erroné pour la première ligne.

cat ~/un.txt

gnome 20
bash 2
gedit 1

Tu l'as noté, j'ai ôté les deux petits points : dans le fichier précédent, tu peux le faire avec awk ou sed, par exemple.
Une vérification pour te montrer le résultat de cette commande avant de continuer :

:~$ ps -e | grep -c gnome
10
:~$ ps -e | grep -c bash
2
:~$ ps -e | grep -c gedit
1

La suite :

:~$ awk '{ ("ps -e | grep -c  "$1) | getline ma_com}
close("ps -e | grep -c  "$1)
$2==ma_com { print $1,ma_com}' ~/un.txt
bash 2
gedit 1


Comme tu le vois j'ai utilisé la commande getline avec gawk.

Merci GNU.

Je ne suis pas sûr d'avoir répondu à tes attentes, il s'agit plus d'une piste qu'autre chose.

Voici deux liens qui devraient t'intéresser :

Un premier.
Un second.

Une mine d'or (le trésor de cep) : http://www.cepcasa.info/divers/








Poste le Friday 30 November 2007 16:25:59
Répondre     Citer    
Re: ksh et awk
Envoyé par: oudoubah

Le code suivant (avec des spécificités bash!) devrait fonctionner. Il affiche les processus ainsi que le nombre courant et attendu si ceux-ci diffèrent.

Pour éviter d'avoir des occurances de ce que l'on recherche dans le grep (qui implique un grep -v grep), je stocke tout dans un fichier temporaire.

#!/bin/bash

TMP=$(mktemp)
ps -e > $TMP
while read line ; do
  nom=${line%:*}
  nbref=${line#*:}
  nbcourant=$(grep -c $nom $TMP)
  [ $nbref -ne $nbcourant ] && echo "$nom : $nbcourant / $nbref"
done < fichier.cfg

rm -f $TMP

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Friday 30 November 2007 17:45:24
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
ksh et awk
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons