当我输入ls
命令时,我得到以下输出。
-$ ls
aNode ANode bNode BNode cNode CNode DUMP file1 hello.txt TEST.txt
-$
如图所示,上面的输出是以分隔的one
行。filenames
spaces
接下来当我用来grep
寻找匹配项时。
我期望如果找到匹配项,则将打印整行。
但是,相反,grep 只打印匹配项,而不打印包含匹配项的整行。请看下文。
-$ ls | grep 'aNode'
aNode
-$
为什么会出现这种情况?为什么grep
不打印整行?
答案1
ls
如果写入终端而不是管道,则具有不同的输出格式并以不同的方式显示内容。当写入管道时,它每行只写入一个条目,因此grep
可以单独处理每个列表。
因此,当您这样做时,您将获得与仅运行并打印到屏幕时grep
不同的输出。ls
ls
grep
如果你这样做,你会看到同样的效果
ls | cat
这将显示所有条目,每行一个。