bash – 显式重定向的速度差异

有什么区别

sed -ne '10{p;q;}' file.txt

&安培;

sed -ne '10{p;q;}' <file.txt 

我知道sed在这里做了什么,而我所关注的是输入传递的方式.就是我拿了一个sed的例子.

在以下类似的情况下,我相信(这也可能是一个严重的误解):

 exec 4<&0; exec 0<file.txt;sed -ne '10{p;q;}'-;exec 0<&4

正在发生(4,我只是一个临时文件描述符).

所以两者都应该同样快.我错了吗?

最佳答案 两者都会以sed处理的文件结束文件描述符,区别在于谁有效地打开()文件,但其余部分是相同的.与无用的猫和管道形成对比.性能影响可能与grep(尤其是GNU grep)更相关,grep在开放fd和更简单的stdin流上做了非常聪明的事情.

点赞