我想知道下面两个命令之间的区别,我明白2)应该使用,但我想知道1)和2)中发生的确切顺序
假设文件名中包含200个字符
假设文件名中包含200个字符
1)cat filename | grep regex
2)grep正则表达式文件名
在功能上(就输出而言),这两者是相同的.第一个实际上创建了一个单独的进程cat,它只是将文件的内容发送到标准输出,它显示在grep的标准输入上,因为shell已经用管道连接了两者.
原文链接:https://www.f2er.com/bash/387149.html从这个意义上讲,grep regex< filename也是等效的,但只需少一个进程. 当grep使用额外信息(文件名)时,您将开始看到差异在于变体,例如:
grep -n regex filename1 filename2
它与之间的区别:
cat filename1 filename2 | grep -n regex
前者可能会给你:
filename1:7:line with regex in 10-line file filename2:2:another regex line
后者更像是:
7:line with regex in 10-line file 12:another regex line
另一个可执行文件,如果它知道文件名是不同的,那就是wc,单词计数器程序:
$cat qq.in 1 2 3 $wc -l qq.in # knows file so prints it 3 qq.in $cat qq.in | wc -l # does not know file 3 $wc -l <qq.in # also does not know file 3