Bonjour,
J'ai 2 fichiers textes contenant chacun une liste de 120.000 chemins+fichiers sous la forme
/chemin/chemin/fichier1
/chemin/chemin/fichier2
/chemin/autre/fichier.truc
Je voudrais obtenir la liste des fichiers absents d'une des listes par rapport à l'autre, mais je n'y arrive pas. J'ai trié les listes par ordre alphabétique puis essayé des trucs mais sans succès. Je suis sur que c'est simple mais vraiment je crois que j'ai les neurones en compote. Je sens que je vais avoir honte tellement la solution est simple.
Il y a 7.000 fichiers qui manquent d'un côté ou de l'autre. Je veux uniquement ce qui manque d'un seul côté. Disons que j'ai une liste AVANT et une liste APRES. Je veux ce qui manque dans APRES sans me soucier de ce qui manque dans AVANT.
# diff
Posté par NeoX . Évalué à 1.
diff
a des options pour caman diff
pour trouver quelle option fait quoi[^] # Re: diff
Posté par gremous . Évalué à 1.
Je n'ai rien trouvé qui fonctionne avec diff.
Au mieux il y a l'option --suppress-common-lines mais ça ne donne pas ce que je recherche.
[^] # Re: diff
Posté par NeoX . Évalué à 2. Dernière modification le 04 août 2020 à 16:34.
diff me dit bien que /chemin/chemin/fichier2 est present dans le fichier1 mais pas dans le 2
et /chemin/chemin/fichier3 est dans fichier2 mais pas dans le fichier1
[^] # Re: diff
Posté par gremous . Évalué à 1.
La question est "Je veux ce qui manque dans APRES sans me soucier de ce qui manque dans AVANT."
Je peux ensuite faire un sed pour virer toutes les lignes genre "2c2" et "----" et "< ".
Ca marche, mais tu as affirmé que sed a des options pour ça, c'est faux.
J'ai trouvé plus efficace, je fais le message plus bas.
# comm
Posté par Colargol . Évalué à 6.
La commande comm des coreutils permet d'opérer sur des fichiers triés :
https://www.gnu.org/software/coreutils/manual/html_node/comm-invocation.html#comm-invocation
[^] # Re: comm
Posté par gremous . Évalué à 2.
Tellement simple, merci !
J'ai fait
comm -13 fichier1 fichier2
et ça fait exactement ce que je voulais.# mc
Posté par MicP . Évalué à 0. Dernière modification le 04 août 2020 à 14:44.
J'aime bien, avec GNU Midnight Commander,
sélectionner les deux répertoires
et juste avoir à faire Ctrl+X puis appuyer sur la touche D
Le gros défaut de cet outil,
c'est qu'on finit par oublier beaucoup de noms de commandes et leurs options.
# Comme dit l'adage
Posté par _kaos_ . Évalué à 1. Dernière modification le 04 août 2020 à 15:18.
Salut,
There is more than one way to do it.
A peu près tout langage sait faire ça. Plus ou moins optimisé. Mais pour quelques 100k de lignes, je ne m’inquiéterai pas.
D'ailleurs, c'est un bon exercice !
Matricule 23415
[^] # Re: Comme dit l'adage
Posté par deuzene (site web personnel) . Évalué à 2.
Oui, mais des fois c'est moins simple :
source
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
[^] # Re: Comme dit l'adage
Posté par _kaos_ . Évalué à 2. Dernière modification le 04 août 2020 à 16:00.
Salut,
je fais plus court avec mon exemple en
R
:)Bon, c'est pas la taille qui compte, hein ;)
Matricule 23415
[^] # Re: Comme dit l'adage
Posté par _kaos_ . Évalué à 2.
Re salut,
Et je peux aussi faire :
(ouais, bon, je m'étais un peu gouré sur le post précédent mais pu éditer. Désolé pour les familles, toussa.)
Matricule 23415
[^] # Re: Comme dit l'adage
Posté par deuzene (site web personnel) . Évalué à 2.
Toutafé :)
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
# Script python
Posté par Marco . Évalué à 2.
Salut,
Perso, je ferais un script python :
Je fais un set d'avant, un set d'après
Je fais set(avant) - set (après)
Je pense pas que ce soit le plus opti par contre, par contre c'est codable relativement rapidement.
https://www.geeksforgeeks.org/python-set-difference/
Bon courage !
# grep
Posté par balkany . Évalué à 8.
où fichier1 contient les lignes à exclure, et fichier2 la liste dans laquelle on cherche.
[^] # Re: grep
Posté par gremous . Évalué à 1.
Joli, merci !
Je note l'astuce.
# sqlite
Posté par Pol' uX (site web personnel) . Évalué à 3. Dernière modification le 05 août 2020 à 14:22.
Adhérer à l'April, ça vous tente ?
[^] # Re: sqlite
Posté par Pol' uX (site web personnel) . Évalué à 3.
En reformattant mon post pour présenter le code je me suis zoinxé le texte:
Adhérer à l'April, ça vous tente ?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.