Mercredi 25 novembre 2009 3 25 /11 /Nov /2009 17:24
Ce script parcours un répertoire mois par mois (trop de fichiers pour un simple ls)
extrait la date runtime du fichier netcdf, en enlève les séparateurs
et la compare a la date contenue dans le nom du fichier
si ces dates sont différentes, il compare avec le jour précèdent dans le cas des fichiers dont le nom se termine par "T00Z_CUMUL.nc"
sinon il affiche l'erreur

#! /bin/csh
foreach i (01 02 03 04 05 06 07 08 09 10 11 12)
  foreach fic (`ls *2009$i*`)
    set a=`ncdump -h $fic | grep run_time|cut -d\" -f2|cut -c-10|awk 'BEGIN{FS="-"}{print $1 $2 $3}'`
    set b=`echo $fic |cut -c20-27`
    if($a != $b) then
      set fic2=`echo -n METEOFRANCE_ALADIN_;echo -n $b;echo T00Z_CUMUL.nc`
      if($fic == $fic2) then
        set c=`echo $a |cut -c7-8`
        set d=`echo $b |cut -c7-8`
        @ c=$c + 1
        @ d=$d
        if($c != $d) then
          echo $fic " sur le run de " $a
        endif
      else
        echo $fic " sur le run de " $a
      endif
    endif
  end
end
Par memoprog - Publié dans : SHELLS
Ecrire un commentaire - Voir les 0 commentaires
Mercredi 4 novembre 2009 3 04 /11 /Nov /2009 16:13
############################################################
# lister le premier et le dernier fichier d'un repertoire                 
############################################################
#!/bin/csh
foreach i (`ls /home/oo5/oo/modeles_shom/ww3/LOIRE-370M/rolling_archive`)
echo $i "****" >> resWW3
   ls /home/oo5/oo/modeles_shom/ww3/LOIRE-370M/rolling_archive/$i/* | head -1 >>
 resWW3
   ls /home/oo5/oo/modeles_shom/ww3/LOIRE-370M/rolling_archive/$i/* | tail -1 >>
 resWW3
end
Par memoprog - Publié dans : SHELLS
Ecrire un commentaire - Voir les 0 commentaires
Mercredi 4 novembre 2009 3 04 /11 /Nov /2009 14:29

#******************************************

# affiche_dern_ligne : affiche la derniere ligne d'un ensemble de fichier

#******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

tail -1 $fic

end

#*******************************************

# ajout : ajout d'une colonne dans un fichier

# a partir de la 30eme ligne, rajouter une colonne "     -1.00" apres

# le 47eme caractere

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

30,\$ s/^.............................................../&     -1\.00/

w

q

FINED

end

#*******************************************

# ajout_caractere : ajout d'un caractere dans un fichier

# a partir de la 6eme ligne, rajouter un blanc apres

# le 45eme caractere

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

6,\$ s/^............................................./& /

w

q

FINED

end

#*******************************************

# Ajout du parametre OXYGENE dans un fichier au format LPO

# Cas ou une station n'est pas comme les autres

# ici OXYGENE est insere avant la NEPHELOMETRIE deja presente

#*******************************************

#! /bin/csh

foreach fic (`ls`)

echo "Fichier traite :" $fic

head -10 $fic > titi

echo "OXYGENE DISS.           ml/l" >> titi

echo "NEPHELOMETRIE               " >> titi

echo "*(i4,1x,f6.1,1x,f6.1,1x,f6.3,1x,f6.3,1x,f4.2,f7.4)" >>titi

tail +13   $fic | awk  '{printf("%4d %6.1f %6.1f %6.3f %6.3f 9.99%7.4f\n",$1,$2,$3,$4,$5,$6)}' >> titi

mv titi $fic

end

#********************************************

# ajoute_zero :  ajoute des zeros en fin de ligne

# Ajoute 3 zeros sur la 8eme ligne d'un fichier

#********************************************

#! /bin/csh

foreach fic (`ls`)

echo "Fichier traite :" $fic

ed $fic <<FINED

8s/\$/000/

w

q

FINED

end

#*******************************************

# change.sh : remplace une chaine par une autre dans un fichier

# La chaine1 est remplacee par la chaine 2.

# Les 2 chaines sont passees en parametres

# Les fichiers d'origines sont gardes avec l'extension %

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

echo $1 $2

if -f $fic then

        grep -ni $1 $fic

        if $status == 0 then

                sed s@$1@$2@g $fic >/usr/tmp/$fic

                echo "Saving" {$fic}%

                cp $fic {$fic}%

                mv /usr/tmp/$fic $fic

                echo "Changing" $fic

        endif

endif

end

#******************************************

# change_CELCIUS : remplace une chaine fixe par une autre

#******************************************

#! /bin/csh

foreach fic (`ls $1*`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$ s/CELCIUS/CELSIUS/g

w

q

FINED

end

#******************************************

# change_GLOBAL  : remplace une chaine fixe par une autre

#******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$ s/GLOBAL PARAMETERS QC FLAGS=1110/GLOBAL PARAMETERS QC FLAGS=1111/

w

q

FINED

end

# ======================================================

# Permet de remplacer H pour  heure par :

# Convmed ne peut pas traduire une heure de type 09H15

# il lui faut le format suivant 09:15

# ici l'heure se trouve sur la 12eme ligne du fichier

# le H est le 14eme caractere de la ligne

# ======================================================

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

12 s/^\(.............\)H/\1:/

w

q

FINED

end

#******************************************

# change_LGHT : remplace une chaine fixe par une autre

#******************************************

#! /bin/csh

foreach fic (`ls $1*`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$ s;LIGHT IRRADIANCE              (micromol photon/m2/s)   ;LIGHT IRRADIANCE IMMERGED PAR (micromole photon/(m2.s));

w

q

FINED

end

#******************************************

# change_CELCIUS : remplace une chaine fixe par une autre

#******************************************

#! /bin/csh

foreach fic (`ls $1*`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$ s/(N.T.U.)                  /(N.T.U Nephelo Turb. Unit)/g

w

q

FINED

end

#******************************************

# change_TUR3 : remplace une chaine fixe par une autre

#******************************************

#! /bin/csh

foreach fic (`ls $1*`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$ s;TUR3 LIGHT TRANSMISSION            () ;TUR3 LIGHT TRANSMISSION            (%);

w

q

FINED

end

# ======================================================

# Permet de remplacer blancs de l'annee par des zeros

# pour fichiers de format LPO (annee 2000 et 14e ligne)

# ======================================================

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

14,\$ s/^\(.........\)  /\100/

w

q

FINED

end

#******************************************

# change_avail   : remplace une chaine fixe par une autre

#******************************************

#! /bin/csh

foreach fic (`ls $1*`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$ s/Availability=C/Availability=P/g

w

q

FINED

end

#*******************************************

# change_caractere : substitution de caracteres a une position fixe

#                    sur une ligne donnee dans une liste de fichier

# ici changement de la ligne 14 a la fin du fichier            

# remplacement des caracteres 10, 11 et 12 qui sont des blancs par

# 3 zéros (000)

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

14,\$ s/^\(.........\)   /\1000/

w

q

FINED

end

#******************************************

# change_deg : hange le signe degre en blanc sur la ligne n

#                de fichiers

# ici c'est la ligne 17 des fichiers qui est modifiee

#******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

18 s/°/ /

w

q

FINED

end

#******************************************

# change_depth : remplace une chaine suivie de n caracteres quelconques

#                par une autre chaine

# ici c'est DEPH= suivi de 6 caracteres quelconques remplace par

# DEPH= suivi de 6 blancs

#******************************************

#! /bin/csh

foreach fic (`ls $1*.mbt`)

echo "Fichier traite :" $fic

ed $fic <<FINED

#1,\$ s/DEPTH=\?\?\?\?\?\? /DEPTH=       /g

1,\$ s/\(DEPTH=\)...... /\1      /g

w

q

FINED

end

#*******************************************

# Heure_1_0 : remplace les blancs d'une heure par 0

# a partir de la 14eme ligne, remplacer les blancs en position 16

# par des zeros   ex : 970122 10000 => 970122010000

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

:1,\$ s/^\(........................................................................\)*********/\1999999999/

w

q

FINED

end

#******************************************

# change_flags   : change les flags globaux apres extraction Coriolis

#******************************************

#! /bin/csh

foreach fic (`ls *.txt`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$ s/GLOBAL PARAMETERS QC FLAGS=100/GLOBAL PARAMETERS QC FLAGS=111/

w

q

FINED

end

#******************************************

# change_mod   : Change les droits des fichiers dans une arborescence

#******************************************

#! /bin/csh

foreach fic (`ls -R`)

 chmod 777 $fic

end

#******************************************

# change_navire   : remplace une chaine fixe par une autre

#******************************************

#! /bin/csh

foreach fic (`ls $1*`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$ s/35FR FRANCE I/XXXX UNKNOWN/

w

q

FINED

end

#*******************************************

# change-neg : substitution d'une chaine de caractere negative en une

# chaine de caractere 9.999e+99 dans un

# fichier de donnees .cnv a partir de la 91 eme ligne

# a partir du caractere 90 au caractere 99

#*******************************************

#! /bin/csh

foreach fic (`ls *cnv2`)

echo "Fichier traite :" $fic

ed $fic <<FINED

91,\$ s/^(..........................................................................................)-(..........)/\1 9\.999e+99/

w

q

FINED

end

#******************************************

# change_pres  : remplace une chaine par une autre chaine

# ici c'est * PRES par *PRES

#******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$ s/* PRES/*PRES/

w

q

FINED

end

#******************************************

# change_shom   : remplace une chaine fixe par une autre

#******************************************

#! /bin/csh

foreach fic (`ls $1*`)

echo "Fichier traite :" $fic

ed $fic <<FINED

3 s/35 SHOM/35 EPSHOM/

w

q

FINED

end

#******************************************

# change_texte : change le texte sur une ligne donnee dans un ensemble

#                de fichiers

# ici c'est la ligne 6 des fichiers qui est modifiee

#******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

6 s/Sept/09/

w

q

FINED

end

#******************************************

# change_depth : remplace une chaine suivie de n caracteres quelconques

#                par une autre chaine

# ici c'est DEPH= suivi de 6 caracteres quelconques remplacé par

# DEPH= suivi de 6 blancs

#******************************************

#! /bin/csh

foreach fic (`ls 36000111.bot`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$ s/TIME=\?\?\?\? /TIME=9999 /g

w

q

FINED

end

#*******************************************************

# change_valeur : change la valeur 1.000e-02

#dans les fichiers.cnv2 en la valeur par defaut

#9.999e+99, ceci a partir de la ligne 68 de chaque fichier.

#*******************************************************

#! /bin/csh

foreach fic (`ls *.cnv`)

echo "Fichier traite :" $fic

ed $fic <<FINED

68,\$s/1\.000e-02/9\.999e+99/

w

q

FINED

end

#!/bin/csh

foreach i (`ls *`)

    echo $i

    dos2unix   $i $i.1

    mv $i.1 $i

end

#!/bin/csh

foreach i (`ls *`)

    echo $i

    unix2dos   $i $i.1

    mv $i.1 $i

end

#*******************************************

# cherche_et_copie : Cherche un ensemble de fichier dans une

#          arborescence et les recopie dans un seul repertoire

#*******************************************

#! /bin/csh

foreach fic (`find . -name "*_0.nc" -print`)

echo "Fichier traite :" $fic

cp $fic /home6/begmeil/sismer/physique/adcp/exploitation/fichiers_osite_0

end

#############################################

# s1 : concatene les lignes des fichiers - les n lignes d'entete d'un repertoire                 

###########################################

#!/bin/csh

if($1 == '') then

   echo "s1 : concatene les lignes des fichiers .ctd - les n lignes d'entete"

   echo "Usage   : s1 <no ligne> <ficresultat>"

   echo "Exemple : s1 5 toto "

   exit 0

endif

endif

foreach i (`ls *.ctd`)

   tail +$1 $i >> $2

end

#******************************************

# cpt_ligne : compte les lignes des fichiers d'un repertoire et

#             l'affiche a l'ecran

#******************************************

#!/bin/csh

foreach i (`ls *`)

    echo $i

    cat   $i  | wc -l

end

#*******************************************

# date_0 : remplace les blancs d'une date par 0

# a partir de la 14eme ligne, Remplacer les blancs en position 10 par

# des zeros

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

14,\$ s/^\(.........\) /\10/

w

q

FINED

end

#*******************************************

# date_0 : remplace les blancs d'une date par 0

# a partir de la 14eme ligne, Remplacer les blancs en position 10,11 par

# des zeros

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

14,\$ s/^\(.........\)  /\100/

w

q

FINED

end

#*******************************************

# date_0 : remplace les blancs d'une date par 0

# a partir de la 14eme ligne, Remplacer les blancs en position 10,11,12 par

# des zeros

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

14,\$ s/^\(.........\)   /\1000/

w

q

FINED

end

#********************************************

# Effacer la derniere ligne d'un ensemble de fichiers

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

\$d

w

q

FINED

end

#*******************************************

# Effacer toutes les lignes d'un fichier(fic1) qui commencent par "   3"

# et recopier ce nouveau fichier dans fic2

#*******************************************

grep -v "^    3" lst.lst > fic2

#******************************************

# del_ligne_blanche : efface toutes les lignes blanches dans

#                     un ensemble de fichier

#******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$g/^\$/ .d

w

q

FINED

end

#******************************************

# del_ligne_chaine : Effacer toutes les lignes qui commencent

#                    par une chaine de caracteres 

# ici la ligne commence par END

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

/^END/d

w

q

FINED

end

#********************************************

# del_premiere_ligne : Effacer la premiere ligne d'un ensemble de fichiers

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1d

w

q

FINED

end

#############################################

# deldouble.csh : Efface des fichiers identiques dans un meme repertoire

#

# pour le jouer sans la suppression : deldouble.csh -t

############################################

#!/bin/csh

foreach fic ( `ls -d *.b` )

   if ( -f $fic ) then

      foreach fic2 ( `ls -d ${fic}*` )

         if ( -f $fic2 ) then

            if ( $fic != $fic2 ) then

               cmp $fic $fic2 >>& /dev/null

               if ( $status == 0 ) then

                  echo "$fic $fic2 identiques, suppression de $fic2"

                  if ( ${1} != "-t" ) then #Un argument --> test uniquement

                     rm $fic2 >>& /dev/null

                     if ( $status > 0 ) then

                        echo "Echec de suppression du fichier $fic2, doublon de $fic !"

                     endif

                  endif

               endif

            endif

         endif

      end

   endif

end

############################################

#delfinligne : supprime la fin du ligne apres la chaine txt

############################################

#! /bin/csh

foreach fic (`ls copie*`)

echo "Fichier traite :" $fic

ed $fic <<FINED

:1,\$s/txt\(................................................................................\)/txt/

w

q

FINED

end

#*********************************************

# excol

# Date : 22/08/94

#

# Transforme un fichier au format echange LPO en un fichier au meme format

# mais avec des colonnes en moins

#

# lancer par excol racine_nom_de_fichier : excol 91002711 (par exemple)

#*********************************************

# POUR chaque fichier d'une liste

# Lancer ed

#   Remplacer le nombre de parametres sur la ligne 4

#          4s/^\(..............   ...

#   Effacer les lignes des parametres supprimes

#          /TEMP POTENTIELLE/d

#          /SIGMA/d

#   Remplacer la ligne de l'ancien format des donnees par le nouveau format

#          /*(i4/s/*(i4,1x,f6.1,1x,f7.3,1x,f   ...

#   Supprimer les colonnes des parametres qu'on ne veut pas garder

#          /*(i4/+1,\$s/\(....\) \(......\) \(.......\)   ...

#   Ecrire le nouveau fichier

#   Quitter

# FINPOUR

#*********************************************

#! /bin/csh

foreach fic (`ls $1*`)

echo "Fichier traite :" $fic

ed $fic <<FINED

4s/^\(.....................................\)6/\14/

/SIGMA/d

/HAUT DYN/d

/*(i4/s/*(i4,1x,f6.1,1x,f9.4,1x,f9.4,1x,f9.4,1x,f9.4,1x,f9.4)/*(i4,1x,f6.1,1x,f9.4,1x,f9.4,1x,f9.4)/

/*(i4/+1,\$s/\(....\) \(......\) \(.........\) \(.........\) \(.........\) \(.........\) \(.........\)/\1 \2 \3 \4 \7/

w

q

FINED

end

#! /bin/csh

#############################################

#  Generation des plans de positions postscript a partir

#  des limites geographiques saisies dans le serveur

#  ou du plan de route si il y a des donnees

#  pour les campagnes de la liste placee dans le fichier

#  nomme en argument

#  Usage : genere_plp nomficliste

#  Les fichiers sont crees dans le repertoire courant

#  Ces fichiers .gif sont a copier dans :

#      ........../www/public/catal/campagne/plangks

#  Enfin faire un delete des fichiers .gif dans le repertoire

#  courant

#############################################

if ( $#argv != 1 ) then

   echo "usage : genere_plp nomficliste"

   exit(1)

endif

#

foreach cam (`cat $1`)

  echo "generation du plan de position de la campagne : " $cam

  PPLP60 serveur serveur $cam F $cam.ps

  echo Conversion du fichier $cam.ps en $cam.gif

  convert -geometry 500x600! -page 600x580+36+36 $cam.ps $cam.gif

  echo Suppression du fichier $cam.ps

  rm -f $cam.ps

echo Copie du fichier $cam.gif sur le WEB

end

#! /bin/csh

#############################################

#  Generation des plans de positions postscript a partir

#  des limites geographiques saisies dans le serveur

#  ou du plan de route si il y a des donnees

#  pour les campagnes de la liste placee dans le fichier

#  nomme en argument

#  Usage : genere_plp nomficliste

#############################################

if ( $#argv != 1 ) then

   echo "usage : genere_plp nomficliste"

   exit(1)

endif

#

foreach cam (`cat $1`)

  echo "generation du plan de position de la campagne : " $cam

  PPLP60 serveur serveur $cam F $cam.ps

end

#*******************************************

# Heure_1_0 : remplace les blancs d'une heure par 0

# a partir de la 14eme ligne, remplacer les blancs en position 16

# par des zeros   ex : 970122 10000 => 970122010000

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

14,\$ s/^\(...............\) /\10/

w

q

FINED

end

#*******************************************

# Heure_5_0 : remplace les blancs d'une heure par 0

# a partir de la 14eme ligne, remplacer les blancs en position 16,17,18,19,20

# par des zeros   ex : 970122     0 => 970122000000

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

14,\$ s/^\(...............\)     /\100000/

w

q

FINED

end

############################################

# minmax : extrait le min et le max d'une ou de ttes les col d'un fic

############################################

#!/bin/csh

if($#argv != 3) then

   echo "Usage   : minmax <1 ou 0> <nb col> <ficentree>"

   echo "Exemple : minmax 1 5 toto "

   exit 0

endif

if (($1 != '1') && ($1 != '0')) then

   echo "Usage : minmax 1/T <nb col> <ficentree>"

   echo "Usage : entrer 1 pour une colonne ou 0 pour toutes"

   exit 0

endif

set max=`wc $3|awk '{print $1}'`

if ($1 == '1') then

  awk 'BEGIN{i="'$2'"}{print $i}' $3 > a

  sort -nu a > b

  set nb_diff=`wc b|awk '{print $1}'`

  echo "colonne" $2 ":" $nb_diff "valeurs differentes sur " $max

  echo "valeurs min:"

  head -5 b

  echo "valeurs max:"

  tail -5 b

else

  set x=0

  while ($x<$2)

    set x=`expr $x + 1`

    awk 'BEGIN{i="'$x'"}{print $i}' $3 > a

    sort -nu a > b

    set nb_diff=`wc b|awk '{print $1}'`

    echo "colonne" $x ":" $nb_diff "valeurs differentes sur " $max

    echo "valeurs min:"

    head -5 b

    echo "valeurs max:"

    tail -5 b

  end

endif

############################################

# mpline : affiche la ligne <no ligne> de tous les fichiers

#          contenant <nomfic> dans leur nom.

############################################

#!/bin/csh

if($1 == '') then

   echo "Usage   : mpline <no ligne> <nomfic>"

   echo "Exemple : mpline 5 89002211"

   exit 0

endif

if($2 == '') then

   echo "Usage   : mpline <no ligne> <nomfic>"

   echo "Exemple : mpline 5 89002211"

   exit 0

endif

foreach i (`ls *$2*`)

   head -$1 $i | tail -1

end

############################################

# mpline1 : affiche la ligne <no ligne> de tous les fichiers

#           d'un repertoire                 

############################################

#!/bin/csh

if($1 == '') then

   echo "Usage   : mpline1 <no ligne>"

   echo "Exemple : mpline1 5 "

   exit 0

endif

endif

foreach i (`ls *`)

   head -$1 $i | tail -1

end

############################################

# mpline2 : affiche la ligne <no ligne> de tous les fichiers

#           d'un repertoire dont l'extension est <extension>                   

############################################

#!/bin/csh

if($1 == '') then

   echo "Usage   : mpline2 <no ligne> <extension>"

   echo "Exemple : mpline2 5 .cnv"

   exit 0

endif

if($2 == '') then

   echo "Usage   : mpline2 <no ligne> <extension>"

   echo "Exemple : mpline2 5 .cnv"

   exit 0

endif

foreach i (*)

   echo "fichier:" $i

   head -$1 $i | tail -1

end

#! /bin/csh

foreach fic (`ls *`)

echo $fic >> aeiou

grep "RECORD LINES=" $fic | wc -l >> vwxyz

end

paste aeiou vwxyz > nb_stations

rm aeiou vwxyz

#!/bin/csh

foreach i (`ls $1`)

    echo $i

    grep DATE $i | wc -l

end

#******************************************

# queue : affiche la derniere ligne d'un ensemble de fichiers ayant

#         l'extension <extension>

#******************************************

#!/bin/csh

if($1 == '') then

   echo "Usage   : queue <extension>"

   echo "Exemple : queue .cnv"

   exit 0

endif

foreach i (*$1)

   tail -1 $i

end

#*******************************************

# renomme : renomme fichier en fichier2

#*******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

set tmp = ${fic}2

mv $fic $tmp

end

#******************************************

# rm_col : enleve une colonne d'un ensemble de fichiers

#

# ici on enleve la 2eme colonne

#******************************************

#! /bin/csh

foreach fic (`ls`)

echo "Fichier traite :" $fic

tail +1   $fic | awk  '{printf("%4d %5.2f %6.2f %3d %5.2f\n",$1,$3,$4,$5,$6)}' >> titi

mv titi $fic.1 

end

############################################

# script2 : extrait le min et le max d'une col d'un fic

############################################

#!/bin/csh

if($# == 1) then

   echo "extrait le min et le max d'une col d'un fic"

   echo "Usage   : script2 <no col> <ficentree>"

   echo "Exemple : script2 5 toto "

   exit 0

endif

echo "colonne" $1 ":"

awk '{i="'$1'";print $i}' $2 > a

sort -nu a > b

echo "valeurs min:"

head -5 b

echo "valeurs max:"

tail -5 b

############################################

# s4 : compte les nombres de lignes de donnees

############################################

#!/bin/csh

if($1 == '') then

   echo "s4 : compte les nombres de lignes de donnees "

   echo "Usage   : s4 <nb col> <ficentree>"

   echo "Exemple : s4 5 toto "

   exit 0

endif

mpline1 2 > a

echo "nb de lignes : "

awk 'BEGIN {x=0}{x=x+}END {print x}' a

############################################

# tri les valeurs d'une colonne et supprime les doublons en ajoutant le nombre d'occurence trouvees

############################################

#!/bin/csh

if($1 == '') then

   echo "tri les valeurs d'une colonne (separe par des blancs) et supprime les doublons en ajoutant le nombre d'occurence trouvees"

   echo "donner le num de colonne, le fichier en entree et en sortie"

   exit 0

endif

awk 'BEGIN {i="'$1'"}{print $i}' $2 > tmp_a

sort tmp_a > tmp_b

awk 'BEGIN {x=1;n="depart"} {if($0!=n){if(n!="depart"){print n " : " x} ; x=1;n=$0} else {x++}} END {print n x}' tmp_b >$3

rm tmp_a

rm tmp_b

echo "fin : resultats :"

head -3 $3

tail -3 $3

#******************************************

# supcar_debut : supprime les n premiers caracteres de chaque ligne

#                d'un ensemble de fichiers

# ici les 7 premiers caracteres

#******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$ s/^.......//

w

q

FINED

end

#******************************************

# supcar_fin : supprime les n derniers caracteres de chaque ligne

#                d'un ensemble de fichiers

# ici les 13 derniers caracteres

#******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$ s/.............\$//

w

q

FINED

end

############################################

# supcol : on supprime les n premieres ligne d'un fichier et

#          on ne garde que les x premieres colonnes d'un

#          ensemble de fichiers de donnees

# ici on efface les lignes 1 a 8 et on garde les colonnes 1, 2 et 3

############################################

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,8d

1,\$s/\(......\) \(......\) \(......\) .*\$/\1 \2 \3/

w

q

FINED

end

#******************************************

# vire_blanc : efface les blancs de debut de ligne           

#******************************************

#!/bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

mv $fic $fic.dat

sed -e "s/^       *//" $fic.dat   >$fic

end

#******************************************

# vire_blanc_fin : efface tous les blancs de fin de ligne                

#******************************************

#! /bin/csh

foreach fic (`ls *`)

echo "Fichier traite :" $fic

ed $fic <<FINED

1,\$ s/ *\$//

w

q

FINED

end

 

Par memoprog - Publié dans : SHELLS
Ecrire un commentaire - Voir les 0 commentaires
Mercredi 4 novembre 2009 3 04 /11 /Nov /2009 14:28
ce blog est un memo des programmes que j'ai écrit
Par memoprog
Ecrire un commentaire - Voir les 0 commentaires

Présentation

Créer un Blog

Recherche

Calendrier

Mai 2012
L M M J V S D
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
<< < > >>
Créer un blog gratuit sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus