This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Add columns to a file based on matched column and maintain the order of lines using awk

How can I match the column to a file to next file and append the columns if present using awk.

File 1:

    T36
    T200
    T77
    T99
    T100
    T101
    T110

File2:

T36 aa  123
T36 aa  456
T200 cc 789
T99 aa  1011
T77 bb  1213
T77 bb  1415
T100 xx 1617

Desired output:

T36 aa  123
T36 aa  456
T200    cc  789
T77 bb  1213
T77 bb  1415
T99 aa  1011
T100    xx  1617
T101
T110

In my output file I want to get the order of file 1 and also print the lines that are not present in file 2.

So far I have done this but it is printing only the matched columns not all.

awk 'NR == FNR { x[$1]=$1; next} { print x[$1], $0 }' file1 file2

Please Help!!

shell awk bash

Pierre, looks like join needs a sorted file. I want to maintain the order same as the first file without sorting. And thanks for the information.

0 answers

No answers yet.

Log in to answer this question.