5 votes

Joindre deux fichiers à partir de la ligne de commande dans un environnement Linux

Je suis à la recherche d'une solution pour le problème simple suivant. J'ai deux fichiers, fileA y fileB . Chaque fichier ne contient qu'un seul mot par ligne, et ils contiennent exactement le même nombre de lignes.

Je voudrais créer un nouveau fichier appelé fileAB où la i-ème ligne contient la i-ème ligne de fileA un caractère de séparation Tab, et ensuite la i-ème ligne de fileB . Je sais comment le faire en Python ou dans d'autres langages de script, mais ce serait bien d'avoir un bash one-liner pour cela.

Est-il possible de faire cela en bash ou tout autre Shell Unix, en utilisant les outils habituellement disponibles en ligne de commande (ex, sed , awk et autres) ?

12voto

Ignacio Vazquez-Abrams Points 107432

Vous voulez paste .

paste fileA fileB > fileAB

0voto

Meow Points 275

parallel --xapply -j1 -a file_1 -a file_2 echo {} > file_12

ou un autre style

parallel --xapply -k echo :::: file_1 :::: file2 > file_12

Le fichier le plus court enveloppera ses lignes pour correspondre à la longueur du fichier le plus long (si vous souhaitez ce comportement).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X