philou24 a écrit 4 commentaires

  • # une autre proposition

    Posté par  . En réponse au message Prog en bash...debutant. Évalué à 2.

    bonsoir,

    Il faut que tu récupères les messages qui s'affiche sur la console (par un pipe ou dans un fichier, à voir en fonction de la façon dont tu télécharges).
    Puis il faut traiter les résultats. Si je me base sur des lignes toujours au format que tu as indiqué, je te propose la commande suivante :

    - dans un pipe :
    commande_téléchargement | sed 's,.*(\(.*\) MB.*,\1,g' >fichier_sauvegarde

    - dans un fichier :
    sed 's,.*(\(.*\) MB.*,\1,g' fichier_résultat_du_téléchargement >fichier_sauvegarde

    Pour plus de lisibilité, la virgule remplace / dans la commande sed.
    L'expression régulière en détail :
    1- ;*( capture tous les caractères avant la parenthèse ouvrante, y compris la parenthèse
    2- \(.*\) mémorise le motif (voir 4-)
    3- espaceMB.* capture tous les caractères après espaceMB, y compris ces caractères
    4- donc le 2- ne capture que ce qu'il y a entre 1- et 3-
    5- \1 rappelle ce motif mémorisé en 2- et remplace toute la ligne par ce motif

    J'espère que c'était clair et que ça t'aidera.


    Philippe
  • [^] # Re: Heu précise exactement ce que tu veux...

    Posté par  . En réponse au message Parcourir et modifier un fichier. Évalué à 1.

    Bonjour,

    La nuit portant conseil, je me suis aperçu que j'avais oublié le ^ qui permet de ne supprimer que les lignes commençant par * et non toutes les lignes contenant *. Désolé.

    Voici la correction :
    sed '/\*{/,/\*}/ s/^\*.*//g' nom_fichier | grep -v '^$' >nouveau_fichier

    J'espère que ça t'ira.
  • [^] # Re: Heu précise exactement ce que tu veux...

    Posté par  . En réponse au message Parcourir et modifier un fichier. Évalué à 1.

    Bonsoir,

    Si je comprends bien : tu veux suprimer tout ce qu'il y a entre *{ et *} SAUF les lignes ne commençant pas par un * (ou TOUTES les lignes commençant par un *, y compris celles avec { et }). Ai-je bien compris ?

    Si c'est ça, il suffit de légèrement modifier l'expression régulière proposée. Cela donne :
    sed '/\*{/,/\*}/ s/\*.*//g' nom_fichier | grep -v '^$' >nouveau_fichier
    Cela ne supprimera que les lignes commençant par un * entre *{ et *}.

    J'espère avoir compris comme il faut. En tout cas avec tes fichiers de test ça marche, à condition que tu te sois trompré dans la 3ème ligne : {* au lieu de *{.

    Courage.
  • [^] # Re: Heu précise exactement ce que tu veux...

    Posté par  . En réponse au message Parcourir et modifier un fichier. Évalué à 1.

    Bonsoir,

    Voici une solution au problème :
    sed '/\*{/,/\*}/ s/.*//g' nom_fichier | grep -v '^$' >nouveau_fichier

    Explications :
    - /\*{/,/\*}/ : la recherche s'effectue entre les 2 expressions régulières (entre *{ et *}
    - s/.*//g : tout est alors supprimé (remplacé par rien)
    - grep -v '^$' : les lignes vides sont supprimées

    Evident, mais ça m'a demandé pas mal de temps...