Linhas correspondentes em dois arquivos [duplicados]

0

Digamos que eu tenha dois arquivos, file1 e file2 .

file1 :

passd:xxx
hopla:alli
gnar:gungg
araf:utap

file2 :

alli
utap

Como posso verificar quais linhas / palavras do arquivo de correspondência do arquivo2? Na verdade, eu provavelmente poderia fazer isso com comm -1 -2 file1 file2 , mas é possível fazer isso com o awk?

    
por trolkura 17.12.2015 / 01:31

3 respostas

0

Com o awk, você pode começar com o que @jasonwryan sugeriu Comparar dois arquivos ...

Mas modifique-o para atender às suas necessidades. Aqui está o que você pode fazer na linha de comando, com resultados:

$ awk -F: 'FNR==NR {arr[$0];next} $2 in arr' file2 file1
hopla:alli
araf:utap
  • você especificou file2 foi a lista com palavras para pesquisar
  • file1 era o arquivo de texto grande para pesquisar em
  • -F: especifica que o delimitador é dois pontos :
  • $2 desde que o campo para corresponder é neste caso o campo file1 2
  • quando ocorre a correspondência, ação padrão para imprimir a linha, assim você vê as duas linhas correspondentes

Informações adicionais

por 17.12.2015 / 02:29
0

Se tiver problemas com o grep,

  1. Experimente dos2unix file1 file2 para remover qualquer formatação não-UNIX problemática que possa impedir que o grep funcione
  2. como @drewbenn mencionou, grep -f file2 file1

Você deve, então, ver com sucesso as linhas correspondentes:

hopla:alli
araf:utap
    
por 17.12.2015 / 02:38
0

Este comando pode ajudá-lo:

cat file1 | awk '{FS=":" print $0}' | xargs grep file2

Não tenho certeza se o comando diff pode ajudar. Mas se estiver instalado, eu usaria: diff file1 file2

    
por 17.12.2015 / 02:32