echo palavras-chave encontradas

0

Estou tentando descobrir quais palavras-chave estão sendo encontradas para cada arquivo no script abaixo. Eu tentei adicionar echo $ palavras-chave e apenas gera todas as palavras-chave.

Código:

keywords=("Alachua" "ALACHUA" "alachua" "Archer" "Gainesville" "Hawthorne" "High Springs" "Newberry" "Waldo" "LaCrosse" "PA-LOCKA" "PALMETTO BAY" "PINECREST" "34997")
IFS=$'\n'
find . -size +1c -type f ! -exec grep -qwF "${keywords[*]}" {} \; -exec truncate -s 0 {} \;   

Atualização:

O meu problema é que tenho muito mais palavras-chave do que neste exemplo e não sei qual (is) estão sendo encontradas em TODOS os arquivos e preciso removê-las de $ keywords, pois isso atrapalha meus resultados.

    
por Guest 25.03.2014 / 19:08

1 resposta

1

Existem vários problemas:

  1. Você confunde "${keywords[*]}" com "${keywords[@]}" . O primeiro expande para um argumento um .

  2. -q inibe qualquer saída.

  3. Se você tiver vários padrões, não poderá transmiti-los como uma lista de argumentos. Você precisa de -e pattern1 -e pattern2 . Ou você deve passá-los em um arquivo (veja -f ).

Eu acho que awk faz mais sentido neste caso.

Isso pode ser útil:

awk -v patternfile=pattern \
'BEGINFILE {i=0; while(getline var <patternfile) {pattern[i]=var;i++}; '\
'no_patterns=i; close(patternfile)}; '\
'FNR == 1 {print ""; print "file: " FILENAME;}; '\
'{for (i in pattern) { if($0 ~ pattern[i]) {print pattern[i]; delete pattern[i]};}}' \
file file2
    
por 25.03.2014 / 19:35

Tags