Как выполнить одну команду несколько раз, меняя одно слово в команде при каждом запуске?

У меня есть такая команда:

grep word1 file.txt | grep word2 | grep word3

Я хочу иметь возможность запускать всю эту команду несколько раз, меняя значение «word1» каждый раз. У меня есть файл с именем insert.txt, который содержит список слов, которые я хотел бы заменить словом «word1» при каждом запуске.

Как бы я мог сделать что-то подобное?

3
задан 14 April 2015 в 22:50

1 ответ

Используйте это, если Вы хотите проводить каждую строку за один раз из файла insert.txt как шаблон для поиска в file.txt, это произведет только строки от file.txt это соответствует строке в соображении от insert.txt.

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

Здесь -- дан для указания на конец grepопции, иначе шаблоны, смотрящие с - не будет работать.

С другой стороны, выполните следующее, если Вы хотите использовать все строки insert.txt как шаблон для поиска в file.txt сразу, это будет соответствовать всем строкам file.txt это соответствует любой из строк insert.txt:

grep -Ff insert.txt file.txt | grep "word2" | grep "word3"
4
ответ дан 15 April 2015 в 08:50

Другие вопросы по тегам:

Похожие вопросы: