我有一个这样的命令:
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
as 模式的所有行进行搜索,请运行以下命令file.txt
立刻,这将匹配file.txt
与 中的任意行匹配的所有行insert.txt
:
grep -Ff insert.txt file.txt | grep "word2" | grep "word3"