mantém linhas do primeiro arquivo que não correspondem ao segundo arquivo

0

Eu tenho 2 arquivos, cada um com mais de 1000 linhas,

head file 1


3.3    6.6    10    0    0.6    0.33    "Ha1_00044004__C"
0      0       0   10     0       1     "Ha1_00043486__A"
3.3    6.6    10    0    0.6    0.3     "Ha1_00045379__C"
3      6       9    1    0.6    0.4     "Ha1_00045316__C"

head file 2
0    0    0    10    0    1     "Ha1_00043486__A"
0    0    0    10    0    1     "Ha1_00043840__A"
0    0    0    10    0    1     "Ha1_00043671__A"
0    0    0    10    0    1     "Ha1_00044403__A"
3.3    6.6    10    0    0.6    0.3     "Ha1_00045379__C"
3      6       9    1    0.6    0.4     "Ha1_00045316__C"

Eu quero manter apenas as linhas do arquivo1 que a última coluna "não" corresponde à última coluna do arquivo2. Eu gostaria de receber ajuda.

minha saída desejada

3.3    6.6    10    0    0.6    0.33    "Ha1_00044004__C"
    
por Anna1364 16.04.2018 / 22:26

2 respostas

2

Você pode criar um array associativo (ou hash) com chave nos últimos campos do primeiro arquivo e, em seguida, verificar se o último campo do segundo arquivo NÃO é uma chave válida:

$ awk 'NR==FNR {a[$NF]++; next} !($NF in a)' file2 file1
3.3    6.6    10    0    0.6    0.33    "Ha1_00044004__C"
    
por 17.04.2018 / 00:40
0

Tente:

grep -vf <(awk '{print $7}' < file2) file1
    
por 17.04.2018 / 01:11