了解 Linux 中的 grep 和管道

了解 Linux 中的 grep 和管道

我碰到帖子解释了我的问题。假设有一个名为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

相关内容