Fichier1:
.tid.setnr := 1123
.tid.setnr := 3345
.tid.setnr := 5431
.tid.setnr := 89323
Fichier2:
.tid.info := 12
.tid.info := 3
.tid.info := 44
.tid.info := 60
Fichier de sortie:
.tid.info := 12
.tid.setnr := 1123
.tid.info := 3
.tid.setnr := 3345
.tid.info := 44
.tid.setnr := 5431
.tid.info := 60
.tid.setnr := 89323
text-processing
awk
sed
paste
pmaipmui
la source
la source
Réponses:
En utilisant
paste
:la source
Une autre solution awk:
la source
La
paste
solution est la plus portable et la plus efficace. Je ne mentionne cette alternative que si vous préférez son comportement dans le cas où les deux fichiers n'ont pas le même nombre de lignes:Avec GNU
sed
:Si
file1
a moins de lignes quefile2
, alors quandfile1
est épuisé,sed
ne produira rien pour lui (par opposition aux lignes vides pourpaste
).Si le
file1
nombre de lignes est supérieur àfile2
, ces lignes supplémentaires seront supprimées (par opposition à l'impression de lignes vides pourfile2
avecpaste
).la source
En utilisant
awk
(gawk
,nawk
,mawk
):NR==FNR {x[FNR]=$0;next}
:NR==FNR
est mis en correspondance uniquement si le numéro d'enregistrement en cours est égal au numéro d'enregistrement du fichier en cours (il n'est donc mis en correspondance que lors du traitement du premier fichier): stocke l'enregistrement actuellement traité dans le tableaux
à un index égal au numéro d'enregistrement du fichier en cours et ignore la record actuel{print x[FNR]"\n"$0}
: imprime le contenu du tableaux
à un index égal au numéro d'enregistrement du fichier courant suivi d'une nouvelle ligne et du contenu de l'enregistrement courantla source
file1
etfile2
dans la commande.mawk
également essayé , et il fonctionne également. En tout cas je être raisonnable ne vois pas pourquoi il ne devrait pas fonctionner juste l'inverse (c. -à- tout par les fichiers de commutation). Ce n'est pas que l'on seawk
soucie de l'entrée, les lignes sont des lignes. Si quelque chose n'était pas supporté par sa version, il se serait cassé la première fois. Bien plus facilement, simplement OP a fait une erreur en changeant les fichiers d'entrée dans les arguments.La solution la plus simple est donnée ci-dessous.
ou
la source
file1
puis une ligne defile2
et ainsi de suite ...)