Número da mesma linha em cada arquivo de texto

1

Eu tenho mais de 30 arquivos de texto diferentes e cada um deles tem uma mesma palavra que repete um tempo diferente, por exemplo, em text1 "esr" repetido 12 vezes e em text2 "esr" repetido 21 vezes.

É possível gerar o número de vezes que a palavra é repetida separadamente com um comando?

    
por mohsen17 28.08.2017 / 14:25

5 respostas

6

Com pipeline grep + wc :

for f in *.txt; do echo -n "$f "; grep -wo 'esr' "$f" | wc -l; done

grep opções:

  • -w - palavra-regexp (para corresponder à palavra inteira / separada)

  • -o - imprime somente substrings correspondidas

  • wc -l - conta o número de linhas (palavras correspondentes no nosso caso) para cada arquivo
por 28.08.2017 / 14:40
5
strings ./*.txt|tr " " "\n"|sort|uniq -c
    
por 28.08.2017 / 14:36
4

Use grep para localizar todas as instâncias e, em seguida, contar linhas exclusivas usando uniq -c .

grep "word" * | sort | uniq -c

Se você quiser correspondências por arquivo de entrada, use grep -c :

grep -c "word" * 
    
por 28.08.2017 / 14:37
3
for name in file*.txt; do
    printf 'Pattern occurs %d times in "%s"\n' "$(grep -wo 'pattern' "$name" | wc -l)" "$name"
done
    
por 28.08.2017 / 14:38
1

Se você quiser contar cada palavra em vários arquivos, use AWK , por exemplo:

awk 'BEGIN{RS="[[:space:]]+"}
     {counts[$0]++}
     END{for(word in counts){print word " - " counts[word]}
     ' file1 file2 file...

Isso trata um arquivo como se cada palavra estivesse em uma linha separada, essa é a BEGIN{RS="[[:space:]]+"} parte e, em seguida, conta cada vez que vê uma linha . Remover a parte BEGIN contaria cada linha normal .

Se você estiver interessado apenas em uma palavra específica, poderá alterar o bloco END para algo como:

END{print counts["esr"]}

O que imprimiria apenas os horários "esr" exibidos, mas lembre-se de que isso faz distinção entre maiúsculas e minúsculas.

Para remover a diferenciação de maiúsculas e minúsculas, use counts[tolower($0)]++ ou counts[toupper($0)]++ .

As verificações podem ser adicionadas para imprimir dados quando a contagem passar de um arquivo para outro também.

    
por 28.08.2017 / 22:28