fgrep -f file1.txt file2.txt
Aqui estamos obtendo o padrão de pesquisa do arquivo1.txt e pesquisando no arquivo2.txt.
À medida que o texto é corrigido, estamos usando fgrep
para uma operação de pesquisa mais rápida.
arquivo1.txt (50 linhas)
TERYUFV00000010753
TERYUFV00000009526
arquivo2.txt (500 linhas)
TERYUFV00000009526 refids_739_known_8/10_target
TERYUFV00000018907 refids_12023_known_21/22_target
TERYUFV00000010753 refids_11775_known_1/1_target
Output.txt
TERYUFV00000010753 refids_11775_known_1/1_target
TERYUFV00000009526 refids_739_known_8/10_target
Compare file1.txt (tem 50 linhas) com file2.txt (tem 500 linhas), obtenha a lista de file2.txt que são idênticas a file1.txt.
Eu tentei os dois join & Comando fgrep e gera um arquivo vazio
Quando você usa o join, as entradas em cada linha são como "células" em um banco de dados, mas elas devem ser classificadas, então você pode tentar,
sort file1.txt > file1_t.txt
sort file2.txt > file2_t.txt
E depois faça a junção
$ join file1_t.txt file2_t.txt
que lhe dará uma associação externa, ou seja, uma lista de todas as ocorrências das células em ambos os arquivos. Para reduzir esta lista apenas para as entradas em ambos os arquivos, canalize a saída do comando acima para uniq
$ join file1_t.txt file2_t.txt | uniq
Você precisa sort
antes de você join
.
$ cat a.in
TERYUFV00000010753
TERYUFV00000009526
$ cat b.in
TERYUFV00000009526 refids_739_known_8/10_target
TERYUFV00000018907 refids_12023_known_21/22_target
TERYUFV00000010753 refids_11775_known_1/1_target
$ join a.in b.in
$ join <(sort a.in) <(sort b.in)
TERYUFV00000009526 refids_739_known_8/10_target
TERYUFV00000010753 refids_11775_known_1/1_target
Supondo que seus arquivos estejam classificados:
comm -12 file1 file2
A linha a seguir funciona?
grep -iw -f file1.txt file2.txt
Se os arquivos foram enviados para o servidor a partir de um cliente Windows, talvez você deva executar o dos2unix primeiro.
dos2unix file1.txt file2.txt
Se os comandos acima não funcionarem, você pode tentar as seguintes linhas para ver se há caracteres extra não-imprimíveis no início ou no final das linhas em file1.txt. Os caracteres extra não imprimíveis nos itens do arquivo1.txt podem levar à falha do grep do arquivo2.txt.
cat -v file1.txt
sed -n -l file1.txt
Você também pode resolver esse problema usando AWK
:
NR == FNR {
line[$1];
next;
}
$1 in line {
print $0;
}
Como um forro:
awk 'NR == FNR {line[$1]; next;} $1 in line' file1.txt file2.txt
Certifique-se de armazenar na memória o arquivo menor, ou seja, coloque-o como o primeiro argumento de um forro.