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
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?
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
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
Você pode usar cut
:
grep -wF -f extract.file input.file | cut -d" " -f1,2,3,4 > output.file