我经常有shell编程任务,在那里我遇到了这个模式:使用管道时修改文件的最佳方法是什么?
cat file | some_script > file
这是不安全的 - 猫可能不会在整个文件之前some_script开始写它已经阅读。我真的不想把结果写到一个临时文件中(它很慢,而且我也不想再考虑一个独特的新名字)。
也许,有一个标准的shell命令会缓冲整个流直到EOF达到?例如:
cat file | bufferUntilEOF | script > file
想法?
恩,xargs应该这样做,对不对? – 2010-01-18 23:10:42
我不这么认为。那么,也许它确实如此,但是它的文档说它解决的问题是处理命令参数限制被拒绝的情况。它并没有说它在打开stdout之前缓冲了所有的stdin。 – user48956 2010-01-18 23:16:38
我认为有些选项可以处理缓冲大小的xargs。 – 2010-01-18 23:20:46