SED: supprimer séquence de 3 lignes identiques

Bonjour à tous,

Voici mon problème :

J’ai un fichier que j’ai trié pour qu’il m’affiche toutes les 3 lignes un espace, sous cette forme :

[code]3,60
3,10
1,90

1,48
3,60
6,00

1,66
3,30
4,50

1,60
3,40
5,00

2,10
3,10
3,15

3,60
3,10
1,90

2,05
3,00
3,30

1,48
3,60
6,00
[/code]

Problème, certaines séquences reviennent plusieurs fois dans le fichier (ex: 3.60, 3.10, 1.90).
J’aimerai alors obtenir ceci:

[code]3,60
3,10
1,90

1,66
3,30
4,50

1,60
3,40
5,00

2,10
3,10
3,15

2,05
3,00
3,30

1,48
3,60
6,00
[/code]
Autre petite problématique, une fois ces occurrences supprimées, les autres devront rester strictement dans le même ordre.
J’ai pensé à sed ou awk mais je dois avouer que cela dépasse un peu mes compétences en la matière!
Si je ne suis pas clair demandez-moi!
Merci.

salut,

j’ai plus de facilité avec awk, et il peut imiter uniq.
pour ton cas de figure (enregistrements sur plusieurs lignes, séparés par une ligne vide)awk 'BEGIN{RS=""; FS="\n"} ...«yapuka» ( :wink: ) construire un tableau dont “l’index” est un enregistrement (qui n’est pas sur une ligne, mais sur trois, puisque le RS est une ligne vide), et dont dont la valeur est une variable incrémentée pour chaque enregistrement différent.
pour finir (END{…}), tu tries le tableau pour l’afficher dans l’ordre de ses valeurs.

Une solution avec sed :
[ul]
[li]sed met sur une ligne chaque groupe de valeur[/li]
[li]cat numérote les lignes[/li]
[li]sort va trier les lignes sans prendre en compte leur indice et en supprimant les doublons[/li]
[li]sorte va remettre les lignes dans leur ordre original grâce à l'index[/li]
[li]sed remet les groupes de valeurs sur 3 lignes plutôt qu'une (et enlève l'index)[/li][/ul]

CQFD et assez unix comme solution

Une solution avec sed :
[ul]
[li]sed met sur une ligne chaque groupe de valeur[/li]
[li]cat numérote les lignes[/li]
[li]sort va trier les lignes sans prendre en compte leur indice et en supprimant les doublons[/li]
[li]sorte va remettre les lignes dans leur ordre original grâce à l’index[/li]
[li]sed remet les groupes de valeurs sur 3 lignes plutôt qu’une (et enlève l’index)[/li][/ul]

CQFD et assez unix comme solution

Et hop avec awk :

Les tableaux multi-dimensionnels sont pratiques pour ça.

Edit : un chouia plus court

Merci bien! Je vais tester tout ça dès que j’aurai un peu de temps!

ou encore ceci :

awk 'BEGIN{RS=""; FS="\n"; ORS="\n\n"} ! t[$0]++ ' fichier.txt

Pas mal du tout ! Je n’avais pas imaginé de faire des tests sur des variables en début de bloc.

Merci beaucoup