Bash

為什麼 grep 不列印整行?

  • June 11, 2015

當我輸入ls命令時,我得到以下輸出。

-$ ls
aNode  ANode  bNode  BNode  cNode  CNode  DUMP  file1  hello.txt  TEST.txt
-$

如圖所示,上面的輸出是由 分隔的one行。filenames``spaces

接下來當我使用grep查找匹配項時。

我期待如果找到匹配項,則將列印整行。

但是,相反,grep 只列印匹配項,而不是包含匹配項的整行。請看下文。

-$ ls | grep 'aNode'
aNode
-$

為什麼會這樣?為什麼grep 不列印整行?

ls如果寫入終端而不是管道,則具有不同的輸出格式並以不同的方式顯示內容。當寫入管道時,它每行只寫入一個條目,因此grep可以單獨處理每個列表。

所以當你這樣做時,grep你得到的輸出與ls你執行ls並列印到螢幕時不同。

grep如果你這樣做,你會看到同樣的影響

ls | cat

它將顯示所有條目,每行一個。

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