将标准输出作为模式参数传递给grep



我很确定有人已经问过这个问题,但我无法找到它,无论如何,这里是:

假设我们有一个文件:

$cat file
AAA 123
BBB 456
CCC 789

我想做一些事情,如:

printf "BBBnAAAn" | grep - file

,其中"-"是标准输出。但是grep不认为它是标准输出。

和get

BBB 456
AAA 123

它也应该适用于许多模式,而不是echo "BBB"。除了echo,我有几个管道和一个列表作为输出。

您可以使用gnu grep:

printf "BBBnAAAn" | grep -f - file

我终于找到了一个不能完全说服我的技巧:

grep -f <(printf "BBBnAAAn") file

的回报:

AAA 123
BBB 456

但为什么这是在file顺序?

我发现它不实用,因为它可以相当长,而不是printf "BBBnAAAn"

最新更新