Forum Programmation.shell Pb Avec La Commance Sed Sous Mandrake 9

Posté par  .
Étiquettes : aucune
0
1
oct.
2004
bonsoir,

en faite dans le tmp_file je met le résultat d'un ls -lat
et je veux remplacer "sep" par "09" exemple pour le mois de septembre

sous le serveur unix ou j'ai développé ce shell il fonctionne sans probleme
or sur mon serveur linux ca $%#&! ....


je neparviens pas a faire fonctionner la commande suivante

sed -f $HOME/recup_bon_mois.sed $HOME/$TMP_FILE

j'ai l'erreur suivant :

sed: file /home/dunkan/bin/recup_bon_mois.sed line 1: Unknown option to 's'

la version

GNU sed version 3.02
_________________

variables et script :

HOME=/home/dunkan/bin
TMP_FILE=tmp_recup

contenu du fichier recup_bon_mois.sed
s/Jan/01/g
s/jan/01/g
s/janv/01/g
s/Feb/02/g
s/feb/02/g
s/févr/02/g
s/fév/02/g
s/Mar/03/g
s/mar/03/g
s/mars/03/g
s/Apr/04/g
s/apr/04/g
s/avr/04/g
s/May/05/g
s/may/05/g
s/mai/05/g
s/Jun/06/g
s/jun/06/g
s/juin/06/g
s/Jul/07/g
s/jul/07/g
s/juil/07/g
s/Aug/08/g
s/aug/08/g
s/août/08/g
s/Sep/09/g
s/sep/09/g
s/sept/09/g
s/Oct/10/g
s/oct/10/g
s/oct/10/g
s/Nov/11/g
s/nov/11/g
s/nov/11/g
s/Dec/12/g
s/dec/12/g
s/déc/12/g
  • # Juste comme ça

    Posté par  (site web personnel) . Évalué à 3.

    "file /home/dunkan/bin/recup_bon_mois.sed" dit quoi ?
  • # Charset ?

    Posté par  . Évalué à 3.

    www.chezmoicamarche.org

    mais, si tu as récupéré ton script directement sur l'autre machine, il est possible qu'il y ait des caractères en trop à la fin de la ligne, ou bien un retour chariot pas codé comme il faut ...
  • # Hum...

    Posté par  . Évalué à 2.

    Je suis bien loin d'être un expert en sed, loin de là, mais...
    Lorsque j'ai copié-collé ton code depuis ton message vers un fichier de test sur ma machine, j'ai remarqué un espace avant chaque s/ de tes commandes sed, c'est peut-être de là que ça vient.

    Par ailleurs, c'est pas un peu bourrin de vouloir passer en revue toutes les possibilités de la sorte ?
    Genre, pour le mois de janvier, tu sais que ça commence au moins par jan, peu importe la casse, donc, j'ai essayé ça :

    s/[jJ][aA][nN].*/01/
    Et ça fait deux ou trois lignes de gagnées.

    Sinon, mais là, c'est out of topic complet, pour avoir la date des fichiers dans un autre format que celui par défaut, lors de la sortie de la commande ls -l, tu peux utiliser l'option --time-style
    Par exemple, lors d'un ls -lat --time-style='full-iso', j'obtiens des lignes dans ce genre sur ma machine :
    drwxr-xr-x 41 david users 4096 2004-10-02 10:44:38.000000000 +0000 .
    -rw------- 1 david users 6096 2004-10-02 10:36:24.000000000 +0000 .viminfo
    drwx------ 8 david users 4096 2004-10-02 10:31:44.000000000 +0000 Mail
    -rw-r--r-- 1 david users 670118 2004-10-02 10:31:18.000000000 +0000 .fonts.cache-1
    -rw------- 1 david users 11792 2004-10-01 23:02:41.000000000 +0000 .bash_history

    Voilà....

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.