• # hmm

    Posté par . En réponse au message code retour sed ?. Évalué à 2.

    Le sed ne devrait pas retourner un code d'erreur si le search ne marche pas ?

    si on en croit ton test, il semblerait que non ;-)

    Sed travaille par bloc, et là, tu cherches à lui faire faire une opération sur l'intégralité du fichier. Du coup, pour que sed puisse se charger de ça, il faut le faire travailler sur l'intégralité du fichier (,$).
    Ensuite, ça revient à écrire un script faisant une opération quand le fichier match, et une autre quand il ne matche pas.

    exemple :

    $ cat file1
    pattern1 val1
    pattern2 val2
    $ cat file2
    pattern2 val2
    $ cat tst.sed
    /pattern1/,$ {
    s/pattern1.*/pattern1 val1bis/
    b
    }
    /pattern1/,$! {
    $ a\
    pattern1 val1bis
    b
    }

    $ sed -f ./tst.sed file1
    pattern1 val1bis
    pattern2 val2
    $ sed -f ./tst.sed file2
    pattern2 val2
    pattern1 val1bis



    mais bon, là, c'était juste pour faire joujou avec sed (et je dis pas que c'est la meilleure syntaxe sed pour ce truc là ...), mais je serais toi, je ferais du grep -l pour décider si tu fais du remplacement ou de l'ajout