当我输入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 不打印整行?
ls如果写入终端而不是管道,则具有不同的输出格式并以不同的方式显示内容。当写入管道时,它每行只写入一个条目,因此grep可以单独处理每个列表。
因此,当您这样做时,grep您将获得与ls仅运行ls并打印到屏幕时不同的输出。
grep如果你这样做,你会看到同样的影响
ls | cat
Run Code Online (Sandbox Code Playgroud)
这将显示所有条目,每行一个。