IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Décoder des données base64 d'un ensemble de fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut Décoder des données base64 d'un ensemble de fichier
    bonjour,

    je dois décodé des données d'un fichier

    j'ai des lignes codés en base 64

    j'ai écrit le code suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/sh
    for f in `ls *.csv`;do
    	cat $f | 
    	while read ligne
    	do
    		if test "${#ligne}" -gt 40 -o test $ligne="expressionregulier" 
    			then echo `echo $ligne|openssl enc -base64 -d`
    			else echo $ligne
    		fi
    	done
    done>res.txt
    le problème c'est que ça prend beaucoup de temps est ce qu'il existe une autre manière? est ce qu'on peut utiliser des commandes dans sed ou awk?
    je voudrais savoir également comment utiliser une expression reguliere dans un test cf (code en rouge).??
    merci d'avance.

  2. #2
    Membre expérimenté
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Par défaut
    je ne vois pas comment tu pourrais améliorer cet algo. Pas d'optimisation possisble pour moi. A par supprimer l'option "debug" de openssl.

    Pour les expressions régulière faudrait nous expliquer ce que tu veux faire.

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    ok ça marche

    sinon pour les expressions reguliere

    voila le test que je veux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if test $ligne = "^*=$"
    à savoir chercher les lignes qui se termine par le signe '='

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 654
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    ON N'UTILISE PAS ls DANS UN SCRIPT
    + UUOC
    et toujours mettre les variables entre guillemets
    !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/sh
     
    for f in *.csv
    do
       while read ligne
       do
          if test "${#ligne}" -gt 40 -o echo "$ligne" | grep -q "=$"
          then echo "$ligne" | openssl enc -base64 -d
          else echo "$ligne"
          fi
       done <"$f"
    done >res.txt
    bash permettrait de se passer de grep, avec [[.

    EDIT: if echo "$ligne" | grep -q '.\{40,\}\|=$'
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          if test "${#ligne}" -gt 40 -o echo "$ligne" | grep -q "=$"
    dsl cette ligne de commande ne fonctionne pas

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Bonjour,

    Pourquoi ne pas utiliser la commande base64 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ base64 --help
    Usage: base64 [OPTION]... [FILE]
    Base64 encode or decode FILE, or standard input, to standard output.
     
      -d, --decode          decode data
      -i, --ignore-garbage  when decoding, ignore non-alphabet characters
      -w, --wrap=COLS       wrap encoded lines after COLS character (default 76).
                              Use 0 to disable line wrapping
     
          --help     display this help and exit
          --version  output version information and exit
     
    With no FILE, or when FILE is -, read standard input.
    ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ecriture des données d'une table dans un fichier
    Par jeunot0108 dans le forum Forms
    Réponses: 3
    Dernier message: 13/08/2007, 12h49
  2. Réponses: 1
    Dernier message: 29/01/2007, 19h22
  3. Réponses: 2
    Dernier message: 25/01/2007, 13h20
  4. Insérer des données dans une BD depuis un fichier .bat
    Par kurkaine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/11/2006, 08h31
  5. [FTP] ftp_put avec des données base64
    Par brazilpalace dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2006, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo