为什么 grep 不打印整行?

sps*_*sps 1 ls grep bash

当我输入ls命令时,我得到以下输出。

-$ ls
aNode  ANode  bNode  BNode  cNode  CNode  DUMP  file1  hello.txt  TEST.txt
-$
Run Code Online (Sandbox Code Playgroud)

如所看到的,上面的输出是one已线filenames由separeted spaces

接下来当我grep用来查找匹配项时。

我期待如果找到匹配项,那么将打印整行。

但是,相反,grep 只打印匹配项,而不打印包含匹配项的整行。请参阅下文。

-$ ls | grep 'aNode'
aNode
-$
Run Code Online (Sandbox Code Playgroud)

为什么会这样?为什么grep 不打印整行?

Eri*_*ouf 6

ls如果写入终端而不是管道,则具有不同的输出格式并以不同的方式显示内容。当写入管道时,它每行只写入一个条目,因此grep可以单独处理每个列表。

因此,当您这样做时,grep您将获得与ls仅运行ls并打印到屏幕时不同的输出。

grep如果你这样做,你会看到同样的影响

ls | cat
Run Code Online (Sandbox Code Playgroud)

这将显示所有条目,每行一个。