Files

了解 linux 中的 grep 和管道

  • November 10, 2020

我遇到了這篇文章,它解釋了我的問題。假設有一個名為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需要一個文件路徑作為字元串?

大多數命令可以處理輸入,這些輸入要麼是他們需要打開以進行輸入的文件,要麼是通過 STDIN 傳遞給命令的數據流。

當 的內容通過cat file.txt管道(|

如果內容沒有通過管道通過 STDOUT -> STDIN 傳遞,則命令可以通過打開通過命令行參數按名稱傳遞的文件來接收數據。

例子

將輸出發送到 STDOUT。

$ cat file 
1
2
3
4
5

輸出cat file通過 STDOUTgrep通過管道發送到 ’s STDIN。

$ cat file | grep 5
5

將文件作為命令行參數處理。

$ grep 5 file 
5

直接通過 STDIN 處理文件的內容。

$ grep 5 < <(cat file)
5

在這裡,我展示了file可以grep通過上面的 STDIN 定向到的內容。

引用自:https://unix.stackexchange.com/questions/161962