как сделать объединение двух файлов, обусловленных двумя столбцами, используя команду join и скрипт awk - PullRequest
1 голос
/ 27 апреля 2011

Я хотел бы отбросить строки одного файла, обусловленные другим файлом, с условием, заданным двумя столбцами, которыми они поделились. Это означает, что я хочу отбросить строки файла file_1 с одинаковыми значениями в двух общих столбцах (столбцы 2 и 3), которые используются в другом файле (file_2).

Я хочу использовать команду join, но я не смог.

# The command I used:
join -j 2 -j 3 -a 2 file_2.txt file_1.txt 

Не могли бы вы указать мне ошибки и помочь мне исправить их? А также, я хочу знать, как выполнить эту работу, используя скрипт Awk.

# the two files are **tab-delimited**, and the key fields used to join are **column 2** and **column 3** in  
# these two files. 
**# file_1.txt**

AL3C3P1-4 1 1 T T 1 1 1 1
AL3C3P1-4 1 2 C A 1 1 1 1
AL3C3P1-4 1 3 A A 1 1 1 1
AL3C3P1-4 1 4 C C 1 2 1 1
AL3C3P1-4 1 5 T T 2 3 1 1
AL3C3P1-4 1 6 T T 2 5 1 1
AL3C3P1-4 1 7 T T 2 6 1 1
AL3C3P1-4 1 8 C C 3 9 1 1
AL3C3P1-4 1 9 A A 3 8 1 1
AL3C3P1-4 1 10 C - 3 10 1 1
AL3C3P1-4 1 11 T T 6 11 1 1
AL3C3P1-4 1 12 T - 6 11 1 1
AL3C3P1-4 1 13 C - 8 13 1 1
AL3C3P1-4 1 14 T - 10 15 1 1
AL3C3P1-4 1 15 G G 12 15 1 1
AL3C3P1-4 1 16 G G 12 16 1 1
AL3C3P1-4 1 17 A A 14 18 1 1
AL3C3P1-4 1 18 T T 14 19 1 1
AL3C3P1-4 1 19 G G 14 18 1 1
AL3C3P1-4 1 20 C C 14 22 1 1

**# file_2.txt**
AL3C3P1-4 1 1 T T 1 1 1 1
AL3C3P1-4 1 2 C A 1 1 1 1
AL3C3P1-4 1 3 A A 1 1 1 1
AL3C3P1-4 1 4 C C 1 2 1 1
AL3C3P1-4 1 10 C - 3 10 1 1
AL3C3P1-4 1 11 T T 6 11 1 1
AL3C3P1-4 1 12 T - 6 11 1 1
AL3C3P1-4 1 13 C - 8 13 1 1
AL3C3P1-4 1 14 T - 10 15 1 1
AL3C3P1-4 1 15 G G 12 15 1 1
AL3C3P1-4 1 16 G G 12 16 1 1
AL3C3P1-4 1 17 A A 14 18 1 1
AL3C3P1-4 1 18 T T 14 19 1 1
AL3C3P1-4 1 19 G G 14 18 1 1
AL3C3P1-4 1 20 C C 14 22 1 1

1 Ответ

4 голосов
/ 27 апреля 2011
$ awk 'FNR==NR{a[$2$3];next} (!($2$3 in a))' file2 file1
AL3C3P1-4 1 5 T T 2 3 1 1
AL3C3P1-4 1 6 T T 2 5 1 1
AL3C3P1-4 1 7 T T 2 6 1 1
AL3C3P1-4 1 8 C C 3 9 1 1
AL3C3P1-4 1 9 A A 3 8 1 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...