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