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

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

grep word1 file.txt | grep word2 | grep word3

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

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

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"
Другие вопросы по тегам