GNU/Linux >> Tutoriels Linux >  >> Linux

Prendre la première colonne de 2 fichiers et l'écrire dans un 3ème fichier ?

Supposons que j'ai 2 fichiers, ABC.txt &PQR.txt avec les données présentées ci-dessous à titre d'exemple :

ABC.txt :

ABC DEF

PQR.txt :

PQR XYZ

Je veux grep colonne 1 des deux fichiers et écrivez dans un troisième fichier texte. Comment cela peut-il être fait ?

Ma sortie attendue est (output.txt):

ABC PQR

Réponse acceptée :

Voici plusieurs façons :

  • Utiliser paste et cut :

    $ paste -d ' ' <(cut -d' ' -f 1 ABC.txt ) <(cut -d' ' -f 1 PQR.txt ) > output.txt
    ABC PQR
    

    Si votre système ne prend pas en charge la substitution de processus, utilisez ceci à la place :

    $ cut -d' ' -f 1 ABC.txt > /tmp/aa; cut -d' ' -f 1 PQR.txt > /tmp/bb; paste -d ' ' /tmp/aa /tmp/bb
    
  • Utiliser awk (merci @Costas):

    awk 'FNR==NR{a[FNR]=$1; next}{print a[FNR],$1}' ABC.txt PQR.txt > output.txt
    

    La variable spéciale FNR est le numéro de ligne du fichier d'entrée courant et NR est le numéro de ligne de l'entrée en général, quel que soit le fichier d'où elle provient. Les deux ne sont égaux que pendant la lecture du premier fichier d'entrée. Ainsi, les premiers champs du premier fichier sont enregistrés dans le a tableau (a[FNR]=$1 ) dont les clés sont des numéros de ligne et dont les valeurs sont les 1ers champs. Puis, lorsque le deuxième fichier est atteint, on imprime la valeur correspondant à son numéro de ligne (a[NR] ) et le 1er champ de la ligne courante.


Linux
  1. Copier des fichiers dans le terminal Linux

  2. Renommer un fichier dans le terminal Linux

  3. Comment supprimer des fichiers et des répertoires sous Linux à partir de la ligne de commande

  4. Comment diviser et combiner des fichiers à partir de la ligne de commande sous Linux

  5. Lire et écrire dans le même fichier sous Linux sans l'écraser ??

Télécharger des fichiers avec Wget sur le shell Linux - Explication et exemples

Empêcher les fichiers et les dossiers d'être supprimés ou modifiés accidentellement sous Linux

Gestion de fichiers Linux depuis le terminal

Comment supprimer les lignes qui apparaissent sur le fichier B d'un autre fichier A ?

Prendre la nième colonne dans un fichier texte

Comment compresser un fichier et conserver le fichier .gz ?