Linha grep com palavra específica do arquivo em uma coluna específica

3

Eu tenho um arquivo com números específicos em uma coluna e quero extrair linhas que tenham esses números na coluna 3 de outro arquivo.

Por exemplo, tenho extract.file com:

123
689
456

e input.file com

1 AB 123 home 123
1 AC 568 cat 568
1 BC 689 dog 123
1 BB 456 car 456

E eu quero um arquivo de resultado com apenas:

1 AB 123 home 
1 BC 689 dog
1 BB 456 car

eu usei

grep -wF -f extract.file input.file > output.file

Mas isso inclui a última coluna também:

1 BC 689 dog 123

Então, como posso pesquisar apenas na coluna 3 e excluir a última coluna da saída?

    
por Nicole 21.12.2016 / 10:13

3 respostas

2

Um caminho:

awk 'NR==FNR{a[$1];next}($3 in a){$NF="";print;}' extract.file input.file

Para obter a linha completa sem remover a última coluna:

awk 'NR==FNR{a[$1];next}($3 in a)' extract.file input.file
    
por 21.12.2016 / 10:51
0

use expressões regulares no seu arquivo padrão:

[0-9]\+ [A-Z]\+ 123
[0-9]\+ [A-Z]\+ 689
[0-9]\+ [A-Z]\+ 456


grep -f   extract.file input.file
1 AB 123 home 123
1 BC 689 dog 123
1 BB 456 car 456
    
por 21.12.2016 / 10:42
-1

Você pode usar cut :

grep -wF -f extract.file input.file | cut -d" "  -f1,2,3,4  >  output.file
    
por 21.12.2016 / 10:38

Tags