Déplacer ligne avec script unix

Résolu
Bonjour,

j'ai un fichier qui ressemble à ca :

20: zaerty
21:qsdfg
23:wxcvb
20:yuuiio
21:tyujkjhk
23:erzrrty

et je voudrais que mon script dépplace toute les lignes commencant par '23:' et le mette devant la ligne '20:' juste au-dessus de sorte que mon fichier ressemble à ca :

23:wxcvb
20: zaerty
21:qsdfg
23:erzrrty
20:yuuiio
21:tyujkjhk

Je sais qu'il faut utiliser la commande sed mais je m'y perds un peu merci d'avance.

--

Il n'existe que deux choses infinies, l'univers et la bêtise humaine...
mais pour l'univers, je n'ai pas de certitude absolue. <Albert Einstein>
Configuration: Windows XP
Firefox 2.0

4 réponses

  1. Modérateur
    Salut,
    jp@MDK:~/tmpfs ssh$ cat fich
    20: zaerty
    21:qsdfg
    23:wxcvb
    20:yuuiio
    21:tyujkjhk
    23:erzrrty
    
    jp@MDK:~/tmpfs ssh$ sed -n '/^20/{h;:z;n;/^23/!{H;bz};G;p}' fich
    23:wxcvb
    20: zaerty
    21:qsdfg
    23:erzrrty
    20:yuuiio
    21:tyujkjhk
    
    jp@MDK:~/tmpfs ssh$
    ;-))
    0
    1. Merci pour ta réponse, mais il me répond

      sed: The label /^20/{h;:z;n;/^23/!{H;bz};G;p} is greater than eight characters.


      D'ou vient le probleme ?
      0
      1. Modérateur
        Quelle version de sed ? Quel système ?

        Edit : Sinon, essaie comme ça :
         sed -n '
        /^20/ {
            h
            :z
            n
            /^23/ !{
                H
                b z
            }
            G
            p
        }
        ' fichier
        ;-==
        0
    2. AIX 3 et sed je sais pas trop le --version fonctionne pas en tt cas :S

      0
      1. Modérateur
        Essaie comme je l'ai affiché dans mon précédent message (après édition)...
        0
    3. oui c'est parfait,
      merci bien.
      0
      1. Modérateur
        De rien ;-))
        0