Como retornar a expressão correspondente de um comando grep

0

Estou tentando depurar um comando que uso regularmente para pesquisar em todo o meu sistema de arquivos. Eu tenho um arquivo externo que contém uma lista de expressões regulares que eu quero corresponder contra.

Exemplo [o arquivo real tem centenas de termos] cat terms.txt

cat\|dog\|mouse\|frog\|horse

Neste momento, estou com um problema em que acredito que um dos meus termos esteja causando dor de cabeça e retornando verdadeiro em todas as linhas. Eu quero ser capaz de descobrir qual termo está sendo constantemente atingido para que eu possa lê-lo para ser mais preciso. Estou usando isso em conjunto com o utilitário strings .

find /data/*/** -type f -print0 | xargs -0 strings -f -t d | grep -w "$(terms.txt)"

Que retorna no seguinte formato

/data/animals/felines.txt: 6 tiger cat

O que eu gostaria de ver é algo semelhante ao local em que a expressão que foi correspondida no meu arquivo terms.txt deve ser anexada ao final da linha. Isso é possível sem criar um script bash de algum tipo?

/data/animals/felines.txt: 6 tiger cat - matched expression "cat"

    
por pyRabbit 24.05.2016 / 15:32

1 resposta

1

A opção grep do -o não produzirá exatamente a saída que você está procurando, mas deverá ajudá-lo a encontrar o problema. ele apenas mostra a parte correspondente de cada linha e, se várias partes de uma linha corresponderem, ela exibe cada parte separadamente (em linhas separadas):

/data/animals/felines.txt:cat
    
por 24.05.2016 / 15:35

Tags