2010-12-16 138 views
3

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

3

La commande comm compare deux fichiers triés, ligne par ligne, et fait partie de GNU coreutils.

0
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.

1

Ainsi, si A a

a 
a 
b 

et b a

a 
b 

Que voudriez-vous que la sortie soit (oui ou non)?

+0

Je veux que la sortie soit oui. – syker

1

Utilise la commande diff.

Voici un vide utile avec l'utilisation complète de la commande diff en 3 min

Click Here