Bonjour,
Est ce que c'est possible de supprimer les lignes différentes dans deux fichiers contenant du texte ?
j'ai essayé de voir avec diff ou comm , mais j'arrive pas à bien les exploiter.
merci pour toute suggestion
Version imprimable
Bonjour,
Est ce que c'est possible de supprimer les lignes différentes dans deux fichiers contenant du texte ?
j'ai essayé de voir avec diff ou comm , mais j'arrive pas à bien les exploiter.
merci pour toute suggestion
Bonjour,
tu aurais dit «ça marche pô», on ne serait pas plus avancé. :evilred:Citation:
j'arrive pas à bien les exploiter.
pourtant c'est simple
la ligne différente entre toto et titi (le second ici étant le référant), est bien copiée dans le fichier de résultat tutuCode:
1
2
3
4
5
6
7
8
9 $ cat toto titi $ cat titi toto $ diff toto titi | grep -iv "^>" | sed '/^</ !d ; s/.// ' > tutu $ cat tutu titi $ $ rm titi tutu toto
après tout dépandera du traitement réel que tu veux faire mais le principe c'est d'utiliser un des fichiers à comparer comme référant.
Hello à tous,
Ce n'est pas franchement simple et le PO veut faire le contraire : éliminer les lignes différentes.
Qu'est-ce qui, avec uniq seulement, permet de résoudre cela simplement ? Et accessoirement en conservant la position et le nombre original des lignes dans le fichier ?
Tu peux essayer de combiner « grep -n », « sort » et « uniq », ce qui est un peu le triumvirat des commandes shell. :-) L'option « -n » te permet d'obtenir les numéros de lignes, suivi d'un deux-point, suivi lui-même du contenu de la ligne, ce qui leur sert d'identifiant. Deux lignes seront donc considérées identiques non seulement si leur contenu est le même mais également si leur numéro l'est aussi.
Avec « a » et « b » étant les fichiers à comparer :
Code:$ grep -n "" a b | cut -d':' -f2- | sort -n | uniq -d | cut -d':' -f2-
Tu devrais obtenir ce que tu veux. Remplace « uniq -d » par « uniq -u » pour faire le contraire (ne conserver que les lignes différentes deux à deux).
oui uniq on l'oublie toujours parce qu'il est pas toujours dispo... :):)
oui de plus en plus le coreutils fait parti des "paquages par defaut" des systèmes linux, tout à fait.
Merci à tous