• [^] # Re: Ouai mais en fait non ....

    Posté par . En réponse au message Sed ... je vais craquer. Évalué à 6.

    Bah il est vide, il fait 0 octets :)

    C'est tout à fait logique ;) Je m'explique :

    L'option -i signifie selon le man :
    -i[suffix], --in-place[=suffix]

    edit files in place (makes backup if extension supplied)

    L'option -i te permet donc de modifier le contenu du fichier passé en argument. Tu as le choix de modifier l'original sans sauvegarder le fichier original (pas de suffixe) ou bien de sauvegarder le fichier original sous un nouveau nom (nom du fichier original + suffixe).

    Reprenons la commande que tu as utilisé :
    sed -ie "s/[hs]d[a-z]/${INSTALL_DISK}/g" ${TARGET}/etc/lilo.conf > ${TARGET}/etc/lilo.conf

    Tu passes à l'option -i une valeur : « e ». La commande sed doit donc modifier le fichier original, mais en conserver une copie dans ${TARGET}/etc/lilo.confe (avec le suffix « e » !). L'option -e n'est pas spécifiée (le « e » est compris comme étant la valeur de l'option -i). Ensuite, ton problème de fichier vide est le même que précédemment : tu lis et tu écris dans le même fichier en même temps.

    La bonne commande si tu ne veux pas de sauvegarde est la suivante :
    sed -i -e "s/[hs]d[a-z]/${INSTALL_DISK}/g" ${TARGET}/etc/lilo.conf


    La même, mais avec sauvegarde (on n'est jamais trop prudent) :
    sed -i ".bak" -e "s/[hs]d[a-z]/${INSTALL_DISK}/g" ${TARGET}/etc/lilo.conf


    Voilà ;)