Quelle commande Linux me permet de vérifier si toutes les lignes du fichier A existent dans le fichier B? (c'est presque comme un diff, mais pas tout à fait). Le fichier A contient également des lignes uniq, comme c'est le cas avec le fichier B.Différents fichiers avec la commande Linux
Répondre
La commande comm compare deux fichiers triés, ligne par ligne, et fait partie de GNU coreutils.
if cat A A B | sort | uniq -c | egrep -e '^[[:space:]]*2[[:space:]]' > /dev/null; then
echo "A has lines that are not in B."
fi
Si vous ne réorientent pas la sortie, vous obtiendrez une liste de toutes les lignes qui sont en A qui ne sont pas en B (sauf chaque ligne aura un 2
en face si elle). Cela dépend des lignes de A étant uniques, et les lignes de B étant uniques.
Si ce n'est pas le cas, et que vous ne vous souciez pas de compter les doublons, il est relativement simple de transformer chaque fichier en une liste de lignes uniques en utilisant sort
et uniq
.
Vous cherchez un meilleur outil de comparaison?
Ainsi, si A a
a
a
b
et b a
a
b
Que voudriez-vous que la sortie soit (oui ou non)?
Utilise la commande diff.
Voici un vide utile avec l'utilisation complète de la commande diff en 3 min
Je veux que la sortie soit oui. – syker