#1 Le 06/06/2010, à 22:01
- aromabar
[résolu]nombre ligne sur 2 fichiers
bonjour,
je voudrais mettre le meme nombre de ligne sur deux fichier
je m'explique un peut mieux
g deux fichiers, dont le début est different, mais lorsque je rajoute des lignes dans le premier, je voudrai les dupliquer dans le second
en gros un " RSYNC " mais pas destructif.
donc g trouvé la commande " WC -L " mais il me donne le nombre de ligne suivit du nom du fichier, ce qui m'arrange pas trop, du coup je ne pas faire la différence entre les deux fichier, ce qui aurai pu me permettre de faire un
" tail --ligne $diff >> fichier_2 "
peut etre je pars dans la mauvaise direction
donc je fais appel à vos lumieres.
Merci
Dernière modification par aromabar (Le 09/06/2010, à 19:10)
Hors ligne
#2 Le 06/06/2010, à 22:06
- helly
Re : [résolu]nombre ligne sur 2 fichiers
Déja en pseudo code (je vais voir en vrai code comment tourner ça après)
afficher nombre de lignes fichier 1 →nb_ligne
afficher nombre de lignes fichier 2 →nb_ligne2
copier dans fichier 1 dans fichier 2 de (nb_ligne 2)+1 à nb_ligne
Ce qui donne (à la R.A.C.H.E) :
cat fichier1 | tail -(wc -l fichier2| cut -d " " -f1) >> fichier2
Dernière modification par helly (Le 06/06/2010, à 22:09)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#3 Le 06/06/2010, à 22:09
- AnsuzPeorth
Re : [résolu]nombre ligne sur 2 fichiers
g deux fichiers, dont le début est different, mais lorsque je rajoute des lignes dans le premier, je voudrai les dupliquer dans le second
echo "new line" | tee -a fichier1 >> fichier2
C'est pas ça que tu veux ?
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#4 Le 09/06/2010, à 18:44
- aromabar
Re : [résolu]nombre ligne sur 2 fichiers
re,
pardon pour le temps mis
Merci à vous deux mais c plus dans l'esprit de Helly ce que je cherche, car c'est lors d'une sauvegarde que je veux que ça se mette en place
avec
cat fichier1 | tail -n `(wc -l fichier2| cut -d " " -f1)` >> fichier2
ça marche mieux mais reste plus que je trouve comment faire la "différence" entre fichier1 et fichier2 pour mettre en argument de
tail -n
Mon problème avance en tout cas
car si je fais un truc du genre
i=`(wc -l fichier1 | cut -d " " -f1)`
j=`(wc -l fichier2 | cut -d " " -f1)`
k=$i-$j #le truc que je sais pas 'encore' faire
#et avec
cat fichier1 | tail -n $k >> fichier2
je pense que le tour serai joué, même si dois y avoir plus simple
Dernière modification par aromabar (Le 09/06/2010, à 18:56)
Hors ligne
#5 Le 09/06/2010, à 19:09
- aromabar
Re : [résolu]nombre ligne sur 2 fichiers
c'est bon j'ai trouvé :D:D
#compte nombre ligne dans fichier1 et fichier2
i=`(wc -l fichier2 | cut -d " " -f1)`
j=`(wc -l fichier1 | cut -d " " -f1)`
#difference entre les deux fichiers
k=$(( i -j -1 ))
#ecriture des lignes manquantes
cat fichier1 | tail -n $k >> fichier2
me reste plus qu'a vérif si $k est positif pour l'appliquer ou le dégager
Merci
Dernière modification par aromabar (Le 09/06/2010, à 19:15)
Hors ligne
#6 Le 09/06/2010, à 20:06
- Totor
Re : [résolu]nombre ligne sur 2 fichiers
mouais...
{ head -<nombre de ligne spécifique fichier2> fichier2; sed '1,<nb ligne spécifique fichier1> d' fichier1; } > >(tee fichier2 >/dev/null)
pour exemple :
fix1
fix2
fix3
a
b
c
d
e
f
fix1
fix2
a
b
c
==>
{ head -2 fichier2; sed '1,3 d' fichier1; } > >(tee fichier2 >/dev/null)
A noter que l'utilisation de tee permet d'éviter d'utiliser un fichier temporaire
-- Lucid Lynx --
Hors ligne
#7 Le 10/06/2010, à 01:46
- Watael
Re : [résolu]nombre ligne sur 2 fichiers
môa, j'préfère la solution de aromabar
#compte nombre ligne dans fichier1 et fichier2
i=$(wc -l <fichier2)
j=$(wc -l <fichier1)
#ecriture des lignes manquantes
tail -n $(( ( i - j ) - 1 )) fichier1 >>fichier2
en bash4
readarray f1 <fichier1
readarray f2 <fichier2
i=${#f1[@]}
j=${#f2[@]}
tail -n $(( ( i - j ) - 1 )) fichier1 >>fichier2
Dernière modification par Watael (Le 10/06/2010, à 01:53)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#8 Le 10/06/2010, à 12:06
- aromabar
Re : [résolu]nombre ligne sur 2 fichiers
yop,
Merci Watael pour le "bash4", déja que j'ai du mal avec la V3
mais bon je désespère pas
Hors ligne
#9 Le 10/06/2010, à 13:12
- Totor
Re : [résolu]nombre ligne sur 2 fichiers
@Watael : Je suis surpris que tu n'aies pas proposé la solution à base de tableau en bash 3...
IFS=$'\n'f1=( $(<fichier1) )
IFS=$'\n'f2=( $(<fichier2) )
i=${#f1[@]}
j=${#f2[@]}
tail -n $(( ( i - j ) - 1 )) fichier1 >>fichier2
-- Lucid Lynx --
Hors ligne
#10 Le 10/06/2010, à 13:46
- Watael
Re : [résolu]nombre ligne sur 2 fichiers
demande à aromabar!
en fait, j'ai séché sur l'IFS
merci
++
Dernière modification par Watael (Le 10/06/2010, à 13:48)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne