получение необычных строк из двух разделенных табуляцией файлов на основе одного столбца с помощью AWK - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть 2 разделенных табуляцией файла, как эти 2 примера:

file1:

chr10   103912167   103917248   NOLC1   ENST00000603742.1
chr16   18573197    18558622    NOMO2   ENST00000543392.1
chr1    120611947   120572610   NOTCH2  ENST00000256646.2

file2:

chr16   18573197    18558622    NOMO2   ENST00000543392.1
chr1    120611947   120572610   NOTCH2  ENST00000256646.2
chr1    145209308   145248834   NOTCH2NL    ENST00000344859.3

на основе 4th столбец, я хочу выделить строки в первом файле, которых нет во втором файле.Вот ожидаемый результат:

expected output:

chr10   103912167   103917248   NOLC1   ENST00000603742.1

Я делаю это в AWK, используя следующую команду:

awk 'NR==FNR{a[$4]!=$4;next}a[$4]' file1 file2 > results.txt

, но это делаетне вернуть то, что я хочу.Вы знаете, как исправить команду?

1 Ответ

0 голосов
/ 31 декабря 2018
awk 'NR==FNR{a[$4]=1;next}!a[$4]' file2 file1
#=> chr10   103912167   103917248   NOLC1   ENST00000603742.1

Поскольку вы хотите выводить содержимое из файла1 на основе файла2, вы должны сначала прочитать файл2.

Обратите внимание, что если файл2 может быть пустым, вам следует перейти на другие методы проверки файлов, например ARGIND==1 для GNU awk или FILENAME=="file2" и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...