сравните два столбца разных файлов и напечатайте, если оно соответствует linux - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть 2 файла

файл 1:

содержит (данные 114 строк)

head file1.txt   
    AC002310.2
    AC007298.2
    AL132780.1
    TULP1
    LINC02626
    LINC02211
    AC239809.3
    GTF2F2
    TCF3
    SOX4

файл 2: содержит 20236 строк, 2 столбца, разделенные табуляцией

head file2.txt
AF130248.1      lncRNA
AC023296.1      lncRNA
AL137139.3      lncRNA
AC114778.2      lncRNA
AL162231.5      lncRNA
Z97205.3        lncRNA
AC010184.1      lncRNA
AL357874.3      lncRNA
AL645933.5      lncRNA
AC116317.2      lncRNA

Поэтому я хочу сравнить 2 файла и сохранить из файла 2 только те данные, которые соответствуют файлу 1 на основе первого столбца, НО я также хочу получить информацию из 2-го столбца файла 2

Я попробовал следующее, но оно не работает

awk -F '\t' 'NR==FNR{c[$1]++;next};c[$1] > 0' file2.txt file1.txt

Буду признателен за любую помощь

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Похоже, grep будет работать:

grep -Ff file1.txt file2.txt
1 голос
/ 26 апреля 2020

В вашем примере нет соответствующих полей в обоих файлах, но это должно быть сделано:

awk 'NR==FNR{c[$1]; next} $1 in c' file1 file2

При этом выводятся все строки file2, где первое поле присутствует в file1

...