Sed Affichage de réponse sur plusieurs ligne

Résolu
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. Contributeur
    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
    1. 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. Contributeur
        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
    2. 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. Contributeur
        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. Oui en effet
        0