Como executar um único comando várias vezes ao alterar uma palavra no comando cada vez que é executado?

3

Eu tenho um comando assim:

grep word1 file.txt | grep word2 | grep word3

Eu quero poder executar este comando inteiro várias vezes, alterando o valor de "word1" a cada vez. Eu tenho um arquivo chamado insert.txt que contém uma lista de palavras que eu gostaria de substituir "word1" com cada vez que é executado.

Como eu realizaria algo assim?

    
por Evan 14.04.2015 / 21:45

1 resposta

4

Use isso se quiser usar cada linha de cada vez do arquivo insert.txt como padrão para pesquisar em file.txt , isso produzirá apenas as linhas de file.txt que correspondem ao linha em consideração de insert.txt .

#!/bin/bash
while IFS= read -r word1; do
       grep -- "$word1" file.txt | grep "word2" | grep "word3"
done < insert.txt

Aqui -- é dado para indicar o final das opções de grep , caso contrário, os padrões que aparecem com - não funcionarão.

Por outro lado, execute o seguinte se quiser usar todas as linhas de insert.txt como padrão para pesquisar em file.txt de uma só vez , isso corresponderá a todas as linhas de file.txt que corresponde a qualquer uma das linhas de insert.txt :

grep -Ff insert.txt file.txt | grep "word2" | grep "word3"
    
por heemayl 14.04.2015 / 22:02