canardpc a écrit 6 commentaires

  • [^] # Re: As tu essayer les tableaux ?

    Posté par  . En réponse au message Chaine de caractères. Évalué à 1.

    Non, je n'ai pas pensé aux tableaux je vais essayé.
    Je me demande que fait il des espaces ,enfin je verrais ?

    Merci pour ces réponses.
  • [^] # Re: faute de frappe ?

    Posté par  . En réponse au message Chaine de caractères. Évalué à 1.

    Oui c'est une faute de frappe.
    En fait j'ai commencé par le case mais comme il ne fonctionnait pas j'ai tenté le if... C'est la même chose en théorie mais bon ?!
    En tout cas chez moi cela ne marche pas. Il ne passe jamais dans les cas particuliers seulement dans le cas général,
    ou suivant - où je mets des guillemets - que dans le cas APPEND ET END et m'indiquant une erreur pour pour les cas ou ligne contient 01 ele...
  • [^] # Re: Heu précise exactement ce que tu veux...

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

    Bonjour,

    merci pour ta réponse elle correspond à ce que je recherchais.
    Celle qui fonctionne c'est la première
    sed '/\*{/,/\*}/ s/\*.*//g' nom_fichier | grep -v '^$' >nouveau_fichier
    J'ai essayé bien des trucs et rien ne marchais par exemple des script sed vu qu'il fallait un condtionnement.
    script.sed
    /\*{/ {
    :loop
    /}\*/ {b end}
    N
    b loop
    :end
    s/\(\*{.*\)\*\(.*}\*\)/\1\2/
    /^[:blank:]*$/d
    }

    puis sed -f script.sed < old > nouveau
    Un temps fou pour rien et j'ai au moins appris des trucs sur sed :-)

    Encore merci une solution "simple" et efficace.
  • [^] # Re: Heu précise exactement ce que tu veux...

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

    Bonjour,

    merci pour cette proposition mais je n'ai pas été assez clair sur mon problème et j'en suis désolé.
    En fait j'avais commencé par faire un petit script, vu les besoins que j'avais, lisant ligne par ligne mais cela n'a pas fonctionner et je suis dans une impasse dans cette voie là à cause des tests d'égalités (une ligne contient "*{" pas forcement au début), je ne connais pas de matches en shell et surtout le read ligne à ligne engendrait des incohérences sur le passage des astérisque.(remplacement de la dernière astérisque par tout ce qu'il y a dans le path courant!!)
    Donc je me suis dit qu'il fallait que je trouve une expression régulière permetttant de faire cela mais il me semble que c'est impossible et ce malgré le temps que j'y ai passé!
    J'ai trouvé un expression régulière similaire à la tienne mais elle est trop efficace.
    Je veux dire par la qu'elle efface - celle que j'avais fait aussi - tout ce qui se trouve en *{ et }* alors qu'il faudrait qu'elle efface les lignes commencant par *{ et contenant *} et toutes celles entre qui commence pas *
    En gros
    titi
    *loulou
    {* blablaba
    * bloblo
    blibli
    *toto
    *}
    tata

    doit me rendre :

    titi
    *loulou
    blibli
    tata

    Voila j'aurais du mettre un exemple plus parlant encore désolé. Je continue à chercher mais c'est pas gagner. Si quelqu'un a une idée que ce soit à l'aide d'une expression régulière avec un awk (que je connais pas) ou un sed ou un moyen que le read ne transforme pas les * de fin de ligne je pourrais réutiliser ceci
    [code]
    while read line
    do
    if test line = "*{" then
    aenlever='O' else
    if line = "*}" then
    aenlever='N'
    fi
    case $line in
    "\*{") # marche pas bien vu que caratère spécial unix astérisque et accolade!
    aenlever='O'
    aconserver = 'N'
    ;;
    "\*}")
    aenlever='N'
    ;;
    "\*")
    if test aenlever='O'then
    aconserver = 'N'
    else
    aconserver = 'O'
    fi
    ;;
    )
    aconserver = 'O'
    ;;
    esac
    if aenlever = 'N' and aconserver = 'O' then
    echo $line > fichier-out.txt
    fi
    done <fichier.txt
    [/code]
    C'est pas gagné.
    Encore merci
    c
  • [^] # Re: Heu précise exactement ce que tu veux...

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

    En fait je pensais faire un sed et non un cat et je vais repartir sur cette voie pour l'instant vu qu'avec read cela ne donne rien. Va falloir que je trouve une expression régulière correcte.
    Merci
    c
  • [^] # Re: Heu précise exactement ce que tu veux...

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

    Salut,

    merci pour ta réponse mais ce n'est pas tout à fait cela.
    fichier test en entrée :
    *********************************
    * ceci est le fichier qui fait rien*
    *********************************
    function int ()

    *{ ceci ne sert à rien et n'a
    * pas de sens et doit être enlever
    *}
    la suite du code
    encore
    *{ ceci ne sert à rien et n'a
    * pas de sens et doit être enlever*}

    fichier attendu :
    *********************************
    * ceci est le fichier qui fait rien*
    *********************************
    function int ()
    la suite du code
    encore

    Voila ce qui ce que j'attend.
    Je pensais faire avec un cat ou un awk (bof?) et une expression régulière mais je n'y suis pas arrivé.
    J'ai testé ce que tu a écrit mais cela ne fait rien.
    N'étant pas doué pour les cat j'avais choisit de passer par un script lisant ligne par ligne le fichier mais le read et les astérisques ne font pas ensemble ainsi que les quotes. Les astérisques sont remplacés par les fichiers du répertoire!

    J'espère avoir été plus clair cette fois, et merci d'avance pour toute l'aide possible.
    c