Une autre façon de faire:
join -t ':' -v 1 file_A file_B > file_A.new
Mais cela ne fonctionnera que si file_A et file_B sont correctement triés. Si ce n'est pas le cas, c'est un peu plus long:
1 2 3
| sort -t ':' -k 1,1 file_A > file_A.sorted
sort file_B > file_B.sorted
join -t ':' -v 1 file_A.sorted file_B.sorted > file_A.new |
Explications:- Tri de file_A sur le premier champ, champs séparés par ':' (je suppose qu'il est au format de /etc/passwd).
- Tri de file_B (je suppose que c'est juste une liste de logins, un login par ligne).
- Jointure des deux fichiers triés sur le premier champ, seules les lignes n'apparaissant pas dans file_B.sorted resteront dans le résultat file_A.new.
- Il faudrait nettoyer après: rm -f *.sorted puis mv file_A.new file_A
Partager