Найти уникальные строки между двумя файлами - PullRequest
0 голосов
/ 17 мая 2018

У меня есть два очень больших файла (Файл 1 и Файл 2), Файл 1 имеет много строк и столбцов, я вставляю столбец 1 для простоты.Я хочу напечатать только те строки, которые являются уникальными для файла 1.

Файл 1:

AT1G01010.1
AT1G01020_P1
AT1G01020_P2
AT1G01040.2
AT1G01040_P1
AT1G01046.1
AT1G01050_ID7

Файл 2:

AT1G01010
AT1G01046
AT1G01050

Вывод:

AT1G01020_P1
AT1G01020_P2
AT1G01040.2
AT1G01040_P1

Я пробовал команду comm в Ubuntu, но она не работала, так как проверяет полный шаблон.поэтому, когда он пытается проверить AT1G01010.1 с помощью AT1G01010, он не показывает ничего общего.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

grep - лучший ответ.

С awk: использует не алфавитно-цифровые символы в качестве разделителя полей, запоминает содержимое файла 2 и, если первое поле файла1 не было видно в файле2,выведите эту строку.

gawk -F '[^[:alnum:]]' 'NR==FNR {f2[$1]; next} !($1 in f2)' file2 file1

Работает с GNU awk.

Или join

join -v1 <(sed 's/^[[:alnum:]]\+/& &/' file1 | sort -k 1,1) <(sort file2) | cut -d " " -f 2-
0 голосов
/ 17 мая 2018

Попробуйте:

grep -Fvf file2 file1

Это напечатает строки, которые не полностью или частично совпадают со строками в файле2.

...