Vou fazer algumas suposições (com as quais você parece concordar em sua pergunta).
- O arquivo de chaves é um CSV de chaves (lista separada por vírgulas de palavras-chave)
- O arquivo de dados tem chaves como as primeiras palavras que começam na primeira coluna
- essa restrição pode ser gerenciada com mais algumas coisas no script
- O arquivo de dados não tem duas linhas que começam com a mesma palavra-chave
- se esta restrição for quebrada, você obterá todas as linhas correspondentes | quando você procurar a chave.
- que pode ser manipulado com um "
| tail -1
" para mostrar apenas a primeira correspondência (digamos)
- Você começa a dizer
rtf
arquivos, mas marca a pergunta comotext
.
Se você tiver arquivos em formato rich text, converta-os em arquivos de texto para essa finalidade.
aqui está um script para você,
#!/bin/bash IFS="," # -> to look for comma separated words in key.txt for k in $(sed 's| ||' key.txt) # -----------> to make the search easier do grep "^$k " data.txt # ----> look for key words matching at the start of each line done
Aqui key.txt
é seu primeiro arquivo e data.txt
é seu segundo arquivo.
O loop for
classifica a saída na ordem das chaves.
O comando sed
remove todos os espaços que você possa ter no arquivo key.txt
para facilitar a pesquisa.
Atualizar em caracteres não ingleses (é por isso que parece que você diz arquivo RTF):
Procure por iconv
e converta seu RTF em UTF-8 - acho que grep
pode lidar com isso.
Se é isso que você quer fazer, sua pergunta deve ser reformulada como