J'ai deux fichiers qui ont un nombre de lignes identiques .
Je souhaite fusioner les lignes de fichier 1 et fichier 2 dans fichier
3
Ex: fichier1 blabla ; fichier 2 toto =3D fichier 3 blablatoto
Comment le faire avec sed la commande g, comment je fais pour qu'il
lise une =E0 une les ligne d'un des deux fichier ?
sed -e "s/\$/???fichier 2/g" fichier 1 > fichier 3 ?
(Est que sed est la bonne commande ? ou il en faut une autre ? )
Merci
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Marc Boyer
a écrit :
J'ai deux fichiers qui ont un nombre de lignes identiques . Je souhaite fusioner les lignes de fichier 1 et fichier 2 dans fichier 3 Ex: fichier1 blabla ; fichier 2 toto = fichier 3 blablatoto Comment le faire avec sed la commande g, comment je fais pour qu'il lise une à une les ligne d'un des deux fichier ? sed -e "s/$/???fichier 2/g" fichier 1 > fichier 3 ? (Est que sed est la bonne commande ? ou il en faut une autre ? )
man paste man join
Marc Boyer -- À vélo, prendre une rue à contre-sens est moins dangeureux que prendre un boulevard dans le sens légal. À qui la faute ?
ptilou@gmail.com <ptilou@gmail.com> a écrit :
J'ai deux fichiers qui ont un nombre de lignes identiques .
Je souhaite fusioner les lignes de fichier 1 et fichier 2 dans fichier
3
Ex: fichier1 blabla ; fichier 2 toto = fichier 3 blablatoto
Comment le faire avec sed la commande g, comment je fais pour qu'il
lise une à une les ligne d'un des deux fichier ?
sed -e "s/$/???fichier 2/g" fichier 1 > fichier 3 ?
(Est que sed est la bonne commande ? ou il en faut une autre ? )
man paste
man join
Marc Boyer
--
À vélo, prendre une rue à contre-sens est moins dangeureux
que prendre un boulevard dans le sens légal. À qui la faute ?
J'ai deux fichiers qui ont un nombre de lignes identiques . Je souhaite fusioner les lignes de fichier 1 et fichier 2 dans fichier 3 Ex: fichier1 blabla ; fichier 2 toto = fichier 3 blablatoto Comment le faire avec sed la commande g, comment je fais pour qu'il lise une à une les ligne d'un des deux fichier ? sed -e "s/$/???fichier 2/g" fichier 1 > fichier 3 ? (Est que sed est la bonne commande ? ou il en faut une autre ? )
man paste man join
Marc Boyer -- À vélo, prendre une rue à contre-sens est moins dangeureux que prendre un boulevard dans le sens légal. À qui la faute ?
Benoit Izac
Bonjour,
le 27/06/2005 à 11:48, a écrit dans le message :
J'ai deux fichiers qui ont un nombre de lignes identiques . Je souhaite fusioner les lignes de fichier 1 et fichier 2 dans fichier 3 Ex: fichier1 blabla ; fichier 2 toto = fichier 3 blablatoto Comment le faire avec sed la commande g, comment je fais pour qu'il lise une à une les ligne d'un des deux fichier ? sed -e "s/$/???fichier 2/g" fichier 1 > fichier 3 ? (Est que sed est la bonne commande ? ou il en faut une autre ? )
open my $in1, "<", $ARGV[0] or die "can't open $ARGV[0]"; open my $in2, "<", $ARGV[1] or die "can't open $ARGV[1]"; open my $out, ">", $ARGV[2] or die "can't open $ARGV[2]"; { select $out; while (defined(my $l_in1 = <$in1>) && defined(my $l_in2 = <$in2>)) { print $l_in1, $l_in2; } } close $in1; close $in2; close $out; __END__
Note que si un fichier comporte plus de lignes que l'autre, les lignes supplémentaires seront supprimées sans avertissement.
-- Benoit Izac
Bonjour,
le 27/06/2005 à 11:48, ptilou@gmail.com a écrit
dans le message <1119865692.504818.277600@g43g2000cwa.googlegroups.com> :
J'ai deux fichiers qui ont un nombre de lignes identiques .
Je souhaite fusioner les lignes de fichier 1 et fichier 2 dans fichier
3
Ex: fichier1 blabla ; fichier 2 toto = fichier 3 blablatoto
Comment le faire avec sed la commande g, comment je fais pour qu'il
lise une à une les ligne d'un des deux fichier ?
sed -e "s/$/???fichier 2/g" fichier 1 > fichier 3 ?
(Est que sed est la bonne commande ? ou il en faut une autre ? )
open my $in1, "<", $ARGV[0] or die "can't open $ARGV[0]";
open my $in2, "<", $ARGV[1] or die "can't open $ARGV[1]";
open my $out, ">", $ARGV[2] or die "can't open $ARGV[2]";
{
select $out;
while (defined(my $l_in1 = <$in1>) &&
defined(my $l_in2 = <$in2>)) {
print $l_in1, $l_in2;
}
}
close $in1;
close $in2;
close $out;
__END__
Note que si un fichier comporte plus de lignes que l'autre, les lignes
supplémentaires seront supprimées sans avertissement.
J'ai deux fichiers qui ont un nombre de lignes identiques . Je souhaite fusioner les lignes de fichier 1 et fichier 2 dans fichier 3 Ex: fichier1 blabla ; fichier 2 toto = fichier 3 blablatoto Comment le faire avec sed la commande g, comment je fais pour qu'il lise une à une les ligne d'un des deux fichier ? sed -e "s/$/???fichier 2/g" fichier 1 > fichier 3 ? (Est que sed est la bonne commande ? ou il en faut une autre ? )
open my $in1, "<", $ARGV[0] or die "can't open $ARGV[0]"; open my $in2, "<", $ARGV[1] or die "can't open $ARGV[1]"; open my $out, ">", $ARGV[2] or die "can't open $ARGV[2]"; { select $out; while (defined(my $l_in1 = <$in1>) && defined(my $l_in2 = <$in2>)) { print $l_in1, $l_in2; } } close $in1; close $in2; close $out; __END__
Note que si un fichier comporte plus de lignes que l'autre, les lignes supplémentaires seront supprimées sans avertissement.
-- Benoit Izac
Stephane Chazelas
On Mon, 27 Jun 2005 16:02:52 +0200, Benoit Izac wrote: [...]
Ex: fichier1 blabla ; fichier 2 toto = fichier 3 blablatoto Comment le faire avec sed la commande g, comment je fais pour qu'il lise une à une les ligne d'un des deux fichier ? sed -e "s/$/???fichier 2/g" fichier 1 > fichier 3 ? (Est que sed est la bonne commande ? ou il en faut une autre ? )
Un petit script Perl devrait faire l'affaire : [...]
Quel est le probleme avec paste -d ' ' a b > c ?
Sinon avec awk:
awk '{getline line < "a"; print a $0}' b > c
-- Stephane
On Mon, 27 Jun 2005 16:02:52 +0200, Benoit Izac wrote:
[...]
Ex: fichier1 blabla ; fichier 2 toto = fichier 3 blablatoto
Comment le faire avec sed la commande g, comment je fais pour qu'il
lise une à une les ligne d'un des deux fichier ?
sed -e "s/$/???fichier 2/g" fichier 1 > fichier 3 ?
(Est que sed est la bonne commande ? ou il en faut une autre ? )
Un petit script Perl devrait faire l'affaire :
[...]
On Mon, 27 Jun 2005 16:02:52 +0200, Benoit Izac wrote: [...]
Ex: fichier1 blabla ; fichier 2 toto = fichier 3 blablatoto Comment le faire avec sed la commande g, comment je fais pour qu'il lise une à une les ligne d'un des deux fichier ? sed -e "s/$/???fichier 2/g" fichier 1 > fichier 3 ? (Est que sed est la bonne commande ? ou il en faut une autre ? )
Un petit script Perl devrait faire l'affaire : [...]
Quel est le probleme avec paste -d ' ' a b > c ?
Sinon avec awk:
awk '{getline line < "a"; print a $0}' b > c
-- Stephane
Benoit Izac
Bonjour,
le 27/06/2005 à 16:14, Stephane Chazelas a écrit dans le message :
Ex: fichier1 blabla ; fichier 2 toto = fichier 3 blablatoto Comment le faire avec sed la commande g, comment je fais pour qu'il lise une à une les ligne d'un des deux fichier ? sed -e "s/$/???fichier 2/g" fichier 1 > fichier 3 ? (Est que sed est la bonne commande ? ou il en faut une autre ? )
Un petit script Perl devrait faire l'affaire : [...]
Quel est le probleme avec paste -d ' ' a b > c ?
Pas sûr d'avoir bien compris la question mais ce serait pas plutôt : paste -d 'n' a b > c
Sinon avec awk:
awk '{getline line < "a"; print a $0}' b > c
et ici : awk '{getline line < "a"; print line "n" $0}' b > c
Sinon pas de problème ;-) À moins que mon serveur de news bouffe des messages (ce qui est plus que probable), je n'avais pas vu ces solutions. J'ai donc proposé celle qui me venait à l'esprit et j'avoue que je ne connaissais pas la commande paste qui me semble parfaite ici.
-- Benoit Izac
Bonjour,
le 27/06/2005 à 16:14, Stephane Chazelas a écrit
dans le message <slrndc02dn.8go.stephane@duey.spider.com> :
Ex: fichier1 blabla ; fichier 2 toto = fichier 3 blablatoto Comment
le faire avec sed la commande g, comment je fais pour qu'il lise une
à une les ligne d'un des deux fichier ? sed -e "s/$/???fichier
2/g" fichier 1 > fichier 3 ? (Est que sed est la bonne commande ?
ou il en faut une autre ? )
Un petit script Perl devrait faire l'affaire :
[...]
Quel est le probleme avec paste -d ' ' a b > c ?
Pas sûr d'avoir bien compris la question mais ce serait pas plutôt :
paste -d 'n' a b > c
Sinon avec awk:
awk '{getline line < "a"; print a $0}' b > c
et ici :
awk '{getline line < "a"; print line "n" $0}' b > c
Sinon pas de problème ;-) À moins que mon serveur de news bouffe des
messages (ce qui est plus que probable), je n'avais pas vu ces
solutions. J'ai donc proposé celle qui me venait à l'esprit et j'avoue
que je ne connaissais pas la commande paste qui me semble parfaite ici.
le 27/06/2005 à 16:14, Stephane Chazelas a écrit dans le message :
Ex: fichier1 blabla ; fichier 2 toto = fichier 3 blablatoto Comment le faire avec sed la commande g, comment je fais pour qu'il lise une à une les ligne d'un des deux fichier ? sed -e "s/$/???fichier 2/g" fichier 1 > fichier 3 ? (Est que sed est la bonne commande ? ou il en faut une autre ? )
Un petit script Perl devrait faire l'affaire : [...]
Quel est le probleme avec paste -d ' ' a b > c ?
Pas sûr d'avoir bien compris la question mais ce serait pas plutôt : paste -d 'n' a b > c
Sinon avec awk:
awk '{getline line < "a"; print a $0}' b > c
et ici : awk '{getline line < "a"; print line "n" $0}' b > c
Sinon pas de problème ;-) À moins que mon serveur de news bouffe des messages (ce qui est plus que probable), je n'avais pas vu ces solutions. J'ai donc proposé celle qui me venait à l'esprit et j'avoue que je ne connaissais pas la commande paste qui me semble parfaite ici.
-- Benoit Izac
DoMinix
Bonjour,
le 27/06/2005 à 11:48, a écrit dans le message :
J'ai deux fichiers qui ont un nombre de lignes identiques . Je souhaite fusioner les lignes de fichier 1 et fichier 2 dans fichier 3 ...
Un petit script Perl devrait faire l'affaire :
toutafé, mais vous pourriez faire plus court
perl -nle 'chomp;push(@{$s[@ARGV]},$_); END{print $s[1][$_].$s[0][$_] for 0..@{$s[0]}}' fic1 fic2 >fic3
-- dominix
Bonjour,
le 27/06/2005 à 11:48, ptilou@gmail.com a écrit
dans le message <1119865692.504818.277600@g43g2000cwa.googlegroups.com> :
J'ai deux fichiers qui ont un nombre de lignes identiques .
Je souhaite fusioner les lignes de fichier 1 et fichier 2 dans fichier
3
...
Un petit script Perl devrait faire l'affaire :
toutafé, mais vous pourriez faire plus court
perl -nle 'chomp;push(@{$s[@ARGV]},$_);
END{print $s[1][$_].$s[0][$_] for 0..@{$s[0]}}' fic1 fic2 >fic3
J'ai deux fichiers qui ont un nombre de lignes identiques . Je souhaite fusioner les lignes de fichier 1 et fichier 2 dans fichier 3 ...
Un petit script Perl devrait faire l'affaire :
toutafé, mais vous pourriez faire plus court
perl -nle 'chomp;push(@{$s[@ARGV]},$_); END{print $s[1][$_].$s[0][$_] for 0..@{$s[0]}}' fic1 fic2 >fic3
-- dominix
Stephane Zuckerman
toutafé, mais vous pourriez faire plus court
perl -nle 'chomp;push(@{$s[@ARGV]},$_); END{print $s[1][$_].$s[0][$_] for 0..@{$s[0]}}' fic1 fic2 >fic3
... Mais moins lisible. ;-) -- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
toutafé, mais vous pourriez faire plus court
perl -nle 'chomp;push(@{$s[@ARGV]},$_);
END{print $s[1][$_].$s[0][$_] for 0..@{$s[0]}}' fic1 fic2 >fic3
... Mais moins lisible. ;-)
--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)
perl -nle 'chomp;push(@{$s[@ARGV]},$_); END{print $s[1][$_].$s[0][$_] for 0..@{$s[0]}}' fic1 fic2 >fic3
... Mais moins lisible. ;-) -- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
Antoine Leca
En <news:, Ptilou va escriure:
Je souhaite fusioner les lignes de fichier 1 et fichier 2 dans fichier 3 (Est que sed est la bonne commande ?
Non. De plus il te faudrait probablement utiliser la commande R, qui est une extension GNU (plutôt récente), donc ce ne serait pas vraiment portable. Ou alors fabriquer un script sed à partir de l'un des deux fichiers, ce qui ne marche que si les fichiers sont de taille « raisonnable ». Bref du bricolage.
Antoine
En <news:1119865692.504818.277600@g43g2000cwa.googlegroups.com>,
Ptilou va escriure:
Je souhaite fusioner les lignes de fichier 1 et fichier 2
dans fichier 3
(Est que sed est la bonne commande ?
Non.
De plus il te faudrait probablement utiliser la commande R, qui est une
extension GNU (plutôt récente), donc ce ne serait pas vraiment portable.
Ou alors fabriquer un script sed à partir de l'un des deux fichiers, ce qui
ne marche que si les fichiers sont de taille « raisonnable ».
Bref du bricolage.
Je souhaite fusioner les lignes de fichier 1 et fichier 2 dans fichier 3 (Est que sed est la bonne commande ?
Non. De plus il te faudrait probablement utiliser la commande R, qui est une extension GNU (plutôt récente), donc ce ne serait pas vraiment portable. Ou alors fabriquer un script sed à partir de l'un des deux fichiers, ce qui ne marche que si les fichiers sont de taille « raisonnable ». Bref du bricolage.
Antoine
Laurent Wacrenier
DoMinix écrit:
toutafé, mais vous pourriez faire plus court
perl -nle 'chomp;push(@{$s[@ARGV]},$_); END{print $s[1][$_].$s[0][$_] for 0..@{$s[0]}}' fic1 fic2 >fic3