[Korn Shell] Commande UNIQ

Résolu/Fermé
cilv1 - 26 mars 2008 à 16:53
 cilv1 - 26 mars 2008 à 17:57
Bonjour à tous,

Je travaille sur un système AIX 4.3 et je suis en train d'écrire un script en Korn Shell (KSH) afin de nettoyer un fichier susceptible de contenir les lignes suivantes :

ES.PREVCT.M.ENV.0.D20080326.H220000.csv_20080326_110800
ES.PREVCT.J.ENV.0.D20080326.H220000.csv_20080326_085700
ES.PREVCT.J.ENV.0.D20080325.H220000.csv_20080325_144200
ES.PREVCT.J.ENV.0.D20080325.H220000.csv_20080325_144100
ES.PREVCT.J.ENV.0.D20080325.H220000.csv_20080325_143700
ES.PREVCT.J.ENV.0.D20080325.H220000.csv_20080325_142100

En gros, je souhaite supprimer les lignes dont le texte délimité en gras est répété.

Pour l'exemple ci-dessus, le résultat attendu est le suivant :

ES.PREVCT.M.ENV.0.D20080326.H220000.csv_20080326_110800
ES.PREVCT.J.ENV.0.D20080326.H220000.csv_20080326_085700

Je sais déjà comment trier les lignes (commande SORT), mais je reconnais que je galère un peu avec la commande UNIQ.

Pour info, voici comment est implémentée la commande UNIQ sur ma machine :
Usage: uniq [-c | -d | -u] [-f Fields] [-s Chars] [-Fields] [+Chars] [Input_file [Output_file]]

Merci d'avance pour votre aide.
ps : si jipicy tu es dans le coin je sais que tu as sûrement la bonne réponse ;-))
A voir également:

1 réponse

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
26 mars 2008 à 17:12
Salut,

Avec "sort" et l'option -u (uniq) ça devrait le faire :
[tmpfs]$ cat plop
ES.PREVCT.M.ENV.0.D20080326.H220000.csv_20080326_110800
ES.PREVCT.J.ENV.0.D20080326.H220000.csv_20080326_085700
ES.PREVCT.J.ENV.0.D20080325.H220000.csv_20080325_144200
ES.PREVCT.J.ENV.0.D20080325.H220000.csv_20080325_144100
ES.PREVCT.J.ENV.0.D20080325.H220000.csv_20080325_143700
ES.PREVCT.J.ENV.0.D20080325.H220000.csv_20080325_142100

[tmpfs]$ sort -t "_" -k 1,1 -u plop
ES.PREVCT.J.ENV.0.D20080325.H220000.csv_20080325_144200
ES.PREVCT.J.ENV.0.D20080326.H220000.csv_20080326_085700
ES.PREVCT.M.ENV.0.D20080326.H220000.csv_20080326_110800
[tmpfs]$    
Ah oui, c'est pas 2 lignes uniques, mais 3 qu'il reste ;-))
3
Je n'osais pas espérer une réponse du maître jipicy, mais une fois de plus tu as trouvé la solution miracle !

Merci encore et bonne continuation :-))
0