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,
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é.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 tutu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 SHELL : Sélectionner tout - Visualiser dans une fenêtre à part $ 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...
Ah oui...Ca dépend si tu as coreutils ou pas. Mais a priori, sur une distro linux de base aujourd'hui tu as coreutils non ?
Perso moi il est de base sous arch:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2# pacman -Sg base | grep core* base coreutils
oui de plus en plus le coreutils fait parti des "paquages par defaut" des systèmes linux, tout à fait.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager