Je produis initialement deux fichiers qui contiennent des listes d'URL - je les désignerai comme old
et new
. Je voudrais comparer les deux fichiers et s'il y a des URL dans le new
fichier qui ne sont pas dans le old
fichier, je voudrais qu'elles soient affichées dans un extra_urls
fichier.
Maintenant, j'ai lu quelques trucs sur l'utilisation de la diff
commande mais d'après ce que je peux en dire, cela analyse également l'ordre des informations. Je ne veux pas que la commande ait un effet sur la sortie. Je veux juste que les URL supplémentaires soient new
imprimées dans le extra_urls
fichier, quel que soit l'ordre dans lequel elles sont placées dans l'un des deux autres fichiers.
Comment puis-je faire ceci?
la source
diff
fera la même chose, non?diff
montrera toutes les différences.comm
vous permet de choisir si vous souhaitez voir les lignes du fichier 1, du fichier 2 ou celles qu’elles ont en commun.bash
fonctionne-t-il? Il peut ne pas prendre en charge la substitution de processus.Je voudrais simplement utiliser
grep
:Explication
-f
: indiquegrep
de lire ses modèles de recherche à partir d'un fichier. Dans ce casold
,.-v
: indique à grep d'inverser la correspondance, pour afficher uniquement les lignes non correspondantes.-F
: indique à grep d'interpréter ses modèles de recherche comme des chaînes, et non comme des expressions régulières. De cette façon, l'.
URL correspondra littéralement.Combinés, ceux-ci font
grep
imprimer toutes les lignesnew
qui n'étaient pas dedansold
. L'ordre des URL dans le fichier n'est pas pertinent.la source
-F
des modèles de texte brutLa commande étant importante pour vous, utilisez
awk
la source
> extra
à| sort > extra
. ou| sort -u > extra
si vous ne souhaitez qu'une nouvelle URL apparaisse une fois dans la sortie, quel que soit le nombre de fois qu'elle est dans l'entrée. L'ordre d'entrée est susceptible d'affecter l'ordre de sortie, sauf si vous effectuez un travail supplémentaire quelque part en cours pour l'empêcher.comm
est la meilleure réponse à cette question, maisgrep -Fvf
c'est bien aussiJ'ai une application appelée meld. Il permet de visualiser les deux (ou trois) fichiers côte à côte, montre les différences et permet une copie sélective de l'un à l'autre ou la suppression de caractères.
Meld peut être installé à partir d'un terminal avec
la source