我碰到这帖子解释了我的问题。假设有一个名为file.txt
“foo World”的文件。
泰勒发布的答案解释了很多,但我很困惑如何
cat file.txt | grep "foo"
类似于
grep "foo" file.txt
我认为grep
需要以下内容
grep input argument // input is the string to search for (i.e) foo and
// argument is the file path (./file.txt)
cat file.txt
现在,文件内容的输出成为?foo World
的输入。grep
我对么?如果是这样,我认为grep
需要一个文件路径作为字符串?
答案1
大多数命令可以处理输入,这些输入要么是需要打开输入的文件,要么是通过 STDIN 传递给命令的数据流。
当 的内容cat file.txt
通过管道 ( ) 发送到另一个命令时|
,通过传递到左侧管道的 STDOUT 的输出将被设置并馈送到管道 STDIN 右侧的命令。
如果内容不是通过管道通过 STDOUT -> STDIN 传递,则命令可以通过打开通过命令行参数按名称传递的文件来接收数据。
例子
将输出发送到 STDOUT。
$ cat file
1
2
3
4
5
from 的输出通过管道cat file
通过 STDOUT 发送到的 STDIN。grep
$ cat file | grep 5
5
将文件作为命令行参数处理。
$ grep 5 file
5
直接通过 STDIN 处理文件内容。
$ grep 5 < <(cat file)
5
在这里,我演示了可以通过上面的 STDINfile
定向到的内容。grep