Как выполнить одну команду несколько раз, меняя одно слово в команде при каждом запуске?
У меня есть такая команда:
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"