Une dernière solution, inspirée par winnt et N_BaH, qui me semble la plus simple et en tout cas la plus rapide (2ms):
sort -u -t ':' -k 1,1 passwd.principal passwd.secondaire > passwd.final
Explications:
- La commande sort peut prendre plusieurs fichiers en entrée (ici passwd.principal et passwd.secondaire).
- L'option -u de sort veut dire 'unique', c'est-à-dire que les entrées identiques sont supprimées. Oui, mais lesquelles? La man page indique: output only the first of an equal run. Seule la première des entrées sera conservée, donc l'ordre des fichiers d'entrée est très important: il faut mettre le fichier le plus prioritaire en premier.
- les options -t ':' -k 1,1 indiquent qu'il faut trier sur le premier champ uniquement et que le séparateur de champ est le caractère ':'.
Cette solution va m'aider parce qu'elle est générale: en fait, j'ai 5 fichiers en entrée, il me suffira de les mettre par ordre de priorité. C'est cool, merci à tous pour cet exercice finalement pas si évident.
Partager