
我碰到這帖子解釋了我的問題。假設有一個名為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