Sed Affichage de réponse sur plusieurs ligne

Résolu/Fermé
apprentiDev Messages postés 154 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 1 mai 2013 - 24 mars 2011 à 11:02
apprentiDev Messages postés 154 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 1 mai 2013 - 26 mars 2011 à 19:32
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.

A voir également:

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
24 mars 2011 à 11:50
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
apprentiDev Messages postés 154 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 1 mai 2013 4
Modifié par apprentiDev le 24/03/2011 à 12:10
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
24 mars 2011 à 12:24
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
apprentiDev Messages postés 154 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 1 mai 2013 4
Modifié par apprentiDev le 24/03/2011 à 13:51
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 422
24 mars 2011 à 14:28
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
apprentiDev Messages postés 154 Date d'inscription dimanche 2 mai 2010 Statut Membre Dernière intervention 1 mai 2013 4
26 mars 2011 à 19:32
Oui en effet
0