У меня есть такая команда:
grep word1 file.txt | grep word2 | grep word3
Я хочу иметь возможность запускать всю эту команду несколько раз, меняя значение «word1» каждый раз. У меня есть файл с именем insert.txt, который содержит список слов, которые я хотел бы заменить словом «word1» при каждом запуске.
Как бы я мог сделать что-то подобное?
Используйте это, если Вы хотите проводить каждую строку за один раз из файла 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"