Votre navigateur est obsolète. Téléchargez un navigateur moderne, par exemple FireFox.
Léa-Linux : Forum
Le forum de Léa abrite des discussions autour des Logiciels libres.
Syndication
  • RSS ForumForum complet
  • RSS Forum - DéveloppementForum - Développement
  • RSS Forum - Développement - 332018Cette discussion

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.

Important : quand vous posez une question, n'oubliez pas de nous donner les indications suffisantes pour que nous puissions répondre. En effet, la divination n'est pas le fort du Linuxien averti. Pour une meilleure compréhension, le bon usage de la grammaire et de l'orthographe est fortement encouragé. En particulier, le langage SMS est à éviter absolument. En cas d'abus, il pourra être censuré sans autre forme de procès.
Les messages dont le contenu est illégal (incitant à la haine - raciale ou autre, diffamant), ou dont le contenu est sans rapport avec le sujet du forum, ou qui sont parfaitement stupides ou hors sujet seront supprimés sans pitié. Il pourra même être fait appel au fournisseur d'accès du coupable pour faire cesser ses agissements.
» Index du forum » Développement » ksh et awk
Aller à la discussion: PrécédentSuivante
Action: Nouveau sujetChercherS'authentifier
ksh et awk
Auteur: romain_95 (IP enregistrée)
Date: le 29 novembre 2007 à 20:36

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 :(

Re: ksh et awk
Auteur: romain_95 (IP enregistrée)
Date: le 29 novembre 2007 à 22:35

bon, je dois mal m'y prendre :(

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 ??

Re: ksh et awk
Auteur: tellmewhy (IP enregistrée)
Date: le 30 novembre 2007 à 16:25

Bonjour romain_95 , image : content

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/








Re: ksh et awk
Avatar
Auteur: oudoubah (IP enregistrée)
Date: le 30 novembre 2007 à 17:45

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"



Nom du forum : (antispam) - (en développement:saisir un texte pour le message, rempli cette zone automatiquement)
Votre nom: 
Votre email: 
Sujet: 

 
Ce forum est boosté par Phorum.