• # abcabc

    Posté par  (site web personnel) . Évalué à 3.

    Après tri, ce ne serait pas plutôt ça :

    a
    b
    c
    a
    b
    c

  • # Clarification

    Posté par  . Évalué à 0.

    C'est vrai que l'expression "3 lignes par 3 lignes' peut p-e préter à confusion mais non le résultat est bien celui du message initial: le premier groupe de 3 lignes commence par un 'c', ce groupe de 3 lignes doit donc être placé après le second groupe de 3 lignes qui lui commence par un 'a'.

    Précision: on suppose que le fichier à trier contient bien un nombre total de lignes multiple de 3.

    • [^] # Re: Clarification

      Posté par  (site web personnel) . Évalué à 1.

      Faudrait recoller les lignes 3 par 3 avec une suite de caractère improbable genre <###> puis trier par sort puis redécouper les lignes. sed doit pouvoir le faire.

      L'association LinuxFr ne saurait être tenue responsable des propos légalement repréhensibles ou faisant allusion à l'évêque de Rome, au chef de l'Église catholique romaine ou au chef temporel de l'État du Vatican et se trouvant dans ce commentaire

  • # Une solution bourine

    Posté par  (site web personnel) . Évalué à 3.

    Si tu es sûr que ton fichier ne contient jamais une séquence de caractère précise, l'astuce est d'utiliser sed pour concaténer les lignes 3 par 3, ensuite tu peux faire ton sort, et tu finis en refaisant un coup de sed pour séparer à nouveau les lignes.

    sed 'N;N;s/\n/###/g' toto | sort | sed 's/###/\n/g'

    Dans cet exemple, le fichier s'appelle toto et ne doit jamais contenir la séquence ###.

    Par contre ça ne marche pas avec toutes les version de sed, le fait de pouvoir ajouter des fin de lignes n'est pas complètement standard.

    • [^] # Re: Une solution bourine

      Posté par  . Évalué à 1.

      Merci beaucoup beagf pour la solution (et shift aussi qui à proposé la même méthode moins l'exemple). Exemple nénamoins utile car même en lisant le man de sed ca n'est pas toujours facile de trouver la bonne syntaxe ^ ^.

      Effectivement il faut utiliser une séquence '###' qui n'apparait jamais dans le fichier initial, mais au pire je peux la générer aléatoirement, vérifier avec un grep qu'elle n'est bien pas présente, et dans le cas contraire recommencer jusqu'à ce que cela soit bon.

      Encore merci.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.