Script ksh fonction sed

Bonjour,

Novice en scripting /bin/ksh j'aurais besoin d'un coup de pouce.
Machine : SunOS I386 Solaris5.10

Voici l'idée :

En fait, je souhaite faire une fonction le but étant de faire ressortir qu'une partie du df -h avec sed.
en gros avoir uniquement le nom du disk la dénomination et l'espace utilisé en pourcentage (eg"c0t0d0s0 / 70%")

Dans mon script de base la ligne de commande au complet ci-dessous fonctionne.
echo "toto" `df -h /|grep %| sed -e 's/[0-9].[0-9]G//g' -e 's/[0-9].[0-9]M//g' -e 's/[0-9]G//g' -e 's/[0-9]M//g' -e 's#/dev/dsk/#/#g'` "\n" >> $LOG &&

Ma tentative étant de créer une fonction pour éviter d'avoir a reprendre la ligne de commande qui prend bcp de caractère.
Par contre ma tentative avec la création de la fonction ci-dessous ne marche pas. Quelqu'un a une idée? Merci

Voici mon script

#!/bin/ksh
#
DATE=`date '+%y%m%d%H%M'`
LOG=/var/log/autosed$DATE.log
export LOG
DEBUG=echo

#fonction permettant d'afficher que le pourcentage d'espace utilisé sur une partition type.

call_sed()
{
sedcmd=`grep % | sed -e 's/[0-9].[0-9]G//g' -e 's/[0-9].[0-9]M//g' -e 's/[0-9]G//g' -e 's/[0-9]M//g' -e 's#/dev/dsk/#/#g'` >> $LOG
df -h $1 | $sedcmd
}
call_sed "/"

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. yes effectivement plus simple merci. C'est les débuts donc peut-être je vais chercher trop loin puis aussi j'aimerais prendre l'habite de faire des fonctions.

    Dans ce cas j'aurais cette ligne pour chaque partition :

    df -h / | awk '{print $1" "$5" "$6}' | sed -e 's#/dev/dsk/#/#g'

    alors si je veux faire une fonction ça donnerais le script ci-dessous. Sauf qu'il me manque encore un bout ou il y a une erreur sur la recherche du df et de la valeur :

    #!/bin/ksh
    #
    DATE=`date '+%y%m%d%H%M'`
    LOG=/var/log/autosed$DATE.log
    export LOG

    #fonction permettant d'afficher que le pourcentage d'espace utilisé sur une partition type.

    call_sed()
    {
    sedcmd=` awk '{print $1" "$5" "$6}' | sed -e 's#/dev/dsk/#/#g'` >> $LOG
    df -h $1 | $sedcmd
    }
    call_sed "/"
    1. Bonjour,

      Pas mal plus facile avec awk.

      df -h |awk '{print $1 "\t" $4}'

      A+
      1. Modérateur
        Salut,

        pourquoi pas tout simplement
        df -h | awk '{print $1" "$5" "$6}'
        ?!