Sed Affichage de réponse sur plusieurs ligne

Résolu
apprentiDev Messages postés 171 Statut Membre -  
apprentiDev Messages postés 171 Statut Membre -
Bonjour,

Désolé de vous embêtez à nouveau mais je bloque à nouveau.

Cette fois le problème est le suivant

j'utilise une expression régulière qui me renvoie tous les noms de fichiers qui ne correspond pas.
La fonction _log contient le echo pour l'affichage.
Le code est le suivant

_log "A" "FORMAT" "Mauvais format"'ls -1 | egrep -v -i $PATTERN_PHOTO_OK |sed -s 'N; s/\n//' '
</code>
// liste des fichier dont seul ceux qui ne correspondent à l'expression régulière s'affichent et je veux renvoyer sur le sed pourafficher ligne par ligne

Le problème c'est que ma réponse est de la forme

A-FORMAT, Mauvais format 0hiver.jpg22.jpg

alors que j'aurais voulu

A-FORMAT, Mauvais format 0hiver.jpg
A-FORMAT, Mauvais format 22.jpg

mais si je fais
_log "A" "FORMAT" "Mauvais format"'ls -1 | egrep -v -i $PATTERN_PHOTO_OK |sed -s 'N;' '

J'obtiens

A-FORMAT, Mauvais format 0hiver.jpg // un seul nom de fichier apparait


En vous remerciant d'avance pour votre aide.

3 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    J'ai rien compris ;-((

    Tu peux reformuler ta question avec des exemples bien précis de ce que tu as en sortie et de ce que tu veux réellement ?

    Merci.
    0
  2. apprentiDev Messages postés 171 Statut Membre 4
     
    Salut,

    ma fonction _log est
     echo 'date +"%Y/%m/%d %H:%M:%S"' " -$1-$2,$3" 
    


    Ce que je voudrais c'est une phrase d'erreur par photos comme
    A-FORMAT, Mauvais format 0hiver.jpg
    A-FORMAT, Mauvais format 22.jpg

    Ce que j'obtiens au mieux c'est
    A-FORMAT, Mauvais format 0hiver.jpg22.jpg

    et comment j'ai fait pour obtenir ma sortie c'est
    _log "A" "FORMAT" "Les fichiers suivants ne sont pas au bon format et ne sont donc pas traites"'ls -1 | egrep -v -i $PATTERN_PHOTO_OK | sed -e 'N; s/\n//' ' 
    
    $1 de fonction _log =A  
    -$2 de fonction _log =FORMAT 
    $3 de fonction _log = Mauvais format 
    


    L'utilisation de egrep -v -i me permet bien de sélectionner les fichiers ne correspondant pas au motif de l'expression régulière et je voudrais envoyer le résultat de egrep à sed pour un affichage ligne par ligne des fichiers non correcte

    Mon problème ce situe au niveau du sed car j'ai tester séparément le egrep et le -log qui fonctionne bien

    Suis-je plus clair ?
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Plus clair sans plus ;-((

      De tout façon ton expression avec sed ne sert à rien ;-\

      En effet, tu ajoutes la ligne suivante et tu supprimes le retour à la ligne ce qui induit un affichage sur une seule ligne, chose que tu ne veux pas...

      A la limite ce que tu peux faire si j'ai un peu compris, c'est testé si la ligne commence par "A-FORMAT, Mauvais format" et le cas échéant le rajouter...

      A quoi ressemble la sortie du grep sans le sed ?
      0
  3. apprentiDev Messages postés 171 Statut Membre 4
     
    Salut,

    J'ai réussi en prenant le problème à l'envers

    FILES_ERR='ls -1 | egrep -v -i $PATTERN_PHOTO_OK' 
     //stocke les fichiers ne correspondant pas dans une variable 
        for mauvaise_photo in ${FILES_ERR} 
        do 
         _log "A" "FORMAT" " mauvais format  $mauvaise_photo" 
    // Boucle ou je fais la fonction -log qui fait le echo 
        done 
    


    Merci de ton aide zipe31
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Je suppose que :

      PATTERN_PHOTO_OK="ton_motif"
      ERROR="A-FORMAT, Mauvais format "
      
      while read line
      do
      sed "s/^/${ERROR}/" <<<${line}
      done < <(ls -1 | egrep -v -i "${PATTERN_PHOTO_OK}")

      Devrait faire la même chose, non ?

      ;-))
      0
    2. apprentiDev Messages postés 171 Statut Membre 4
       
      Oui en effet
      0