Forum Programmation.shell Comment mettre a jour un fichier

Posté par  .
Étiquettes : aucune
0
18
oct.
2005
Bonjour a tous,

Je cherche comment mettre a jour un fichier.

Ex:
fichier_1 (c'est l'original)
fichier_2 ( il contient plusieurs lignes dont quelques un identiques au fichier_1)

Je souhaite mettre a jour le fichier_1 sans qu'il a des lignes en doubles.

J'ai pensé a la commande:

cat fichier_2 fichier_1 (2redirection vers) fichier_1

ça fonctionne, mais le problème, j'ai des lignes en double !!!

Comment faire??

Merci pour toutes réponses.

ps: désolé, les caractères plus grand et plus petit ne s'affiche pas correctement.
  • # je ne sais pas si il sont gros mais...

    Posté par  . Évalué à 3.

    un petit exemple des fichier d'origines, leur états, le résultat shouaité et tout et tout ca pourrait etre utile

    mais un cat fich1 fich2 | sort | uniq > fich
    mais ca change l'ordre des lignes

    ou si tu n'as peur de rien regarde du coté de patch et diff

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

    • [^] # Re: je ne sais pas si il sont gros mais...

      Posté par  . Évalué à 4.

      tu me coupes l'herbe sous le pied ! :-)

      je vote pour sort aussi si l'ordre des lignes n'est pas important.
      On peux aussi utiliser l'option -u de sort et virer le cat qui sert à rien
      sort -u fich1 fich2 > fich
    • [^] # Re: je ne sais pas si il sont gros mais...

      Posté par  . Évalué à 2.

      Encore un exemple dans le genre " pourquoi faire simple quand on peut faire compliqué" :)
      sort -u fait le même que sort |uniq, mais c'est plus rapide ....
  • # diff

    Posté par  . Évalué à 1.

    tu peut essayer de faire quelquechose avec la commande diff
    du genre :
    diff fichier1 fichier2|grep ">*"|cut -d '>' -f2>>fichier1
    le grep permet de recuperer les lignes presente du fichier 2 non presente dans le fichier 1
    le cut retire le caractere > du debut de la ligne
    plus d'info :
    man diff
    man grep
    man cut
    • [^] # Re: diff

      Posté par  . Évalué à 0.

      Oui mais avec diff si il y a une ligne vide il le prend en compte! de plus dans mes fichiers j'ai beaucoup de caratères ( < > ) et avec diff cela porte confusion...en faisant cette commande:
      diff fichier1 fichier2|grep ">*"|cut -d '>' -f2>>fichier1
      Et si diff ne voit pas de différence ? que faire ?
      Je pense que diff ne convient pas.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.