J'aimerais réaliser ceci à l'aide d'un script shell :
Je dispose de 2 fichiers A et B, et je souhaite trouver toutes les lignes de A qui ne sont pas dans B, puis toutes les lignes de B qui ne sont pas dans A.
J'ai essayé avec la commande diff, mais elle nécessite que les 2 fichiers soit triés de façon semblables, or ce n'est pas le cas. Ils sont déjà triés (mais différemment) et je voudrais éviter d'en faire des copies pour les retrier avec 'sort' puis ensuite faire un diff.
En gros :
fichier A
1
2
4
A
S
Fichier B
4
S
X
3
2
1
Je voudrais obtenir "A" d'abord (lignes de A qui ne sont pas dans B) puis "X" et "3" (lignes de B qui ne sont pas dans A)
Merci d'avance.
# programmation...
Posté par NeoX . Évalué à 1.
----------
ouvrir A
pour chaque ligne de A, chercher si on trouve la meme dans B
si non_trouve => ecrire la ligne dans C
puis
ouvrir B
pour chaque ligne de B, chercher si on trouve la meme dans A
si non_trouve => ecrire la ligne dans C
----------
ensuite y a plus qu'a regarder dans C
[^] # Re: programmation...
Posté par totof2000 . Évalué à 1.
# moreutils
Posté par 태 (site web personnel) . Évalué à 2.
combine f2 not f1
http://packages.debian.org/unstable/utils/moreutils
# comm est la commande qu'il te faut
Posté par totof2000 . Évalué à -1.
COMM(1) NetBSD General Commands Manual COMM(1)
NAME
comm -- select or reject lines common to two files
SYNOPSIS
comm [-123f] file1 file2
DESCRIPTION
The comm utility reads file1 and file2, which should be sorted lexically,
and produces three text columns as output: lines only in file1; lines
only in file2; and lines in both files.
The filename ``-'' means the standard input.
The following options are available:
-1 Suppress printing of column 1.
-2 Suppress printing of column 2.
-3 Suppress printing of column 3.
Pour que ca marche, il faut que les fichiers soient triés.
droopy# cat A
1
2
4
A
S
droopy# cat B
4
S
X
3
2
1droopy# sort A >A.sorted
droopy# cat ./A.sorted
1
2
4
A
S
droopy# sort B >B.sorted
droopy# cat ./B.sorted
1
2
3
4
S
X
droopy# comm -13 ./A.sorted ./B.sorted
3
X
droopy# comm -23 ./A.sorted ./B.sorted
A
[^] # Re: comm est la commande qu'il te faut
Posté par NeoX . Évalué à 1.
car ca ne repond pas à l'enoncé
et que c'est exactement ce que tu fais sauf que tu n'utilises pas diff mais comm
[^] # Re: comm est la commande qu'il te faut
Posté par totof2000 . Évalué à 2.
Bon pour la peine je vais écrire 100 fois "il faut bien lire l'énoncé d'un problème avant de le résoudre"
# Avec un bon shell
Posté par benoar . Évalué à 2.
J'ai cru un moment que seul zsh le faisait, mais j'avais largement sous-estimé bash qui en fait autant.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.