为什么 grep 不打印整行?

为什么 grep 不打印整行?

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

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

如图所示,上面的输出是以分隔的one行。filenamesspaces

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

我期望如果找到匹配项,则将打印整行。

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

-$ ls | grep 'aNode'
aNode
-$

为什么会出现这种情况?为什么grep 不打印整行?

答案1

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

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

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

ls | cat

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

相关内容