考虑一个单字行的流,例如stdout
$ echo foo bar baz quux xyxxy thud | tr ' ' '\n'
foo
bar
baz
quux
xyxxy
thud
我说“单字”表示除了换行符之外没有空格。我想通过每行填充固定数量的字段(不是单个字符)来“列化”数据,一次一行。对于少量数据,xargs很好地做到了这一点:
$ echo foo bar baz quux xyxxy thud | tr ' ' '\n' | xargs -n 2
foo bar
baz quux
xyxxy thud
但是使用xargs这种方式很慢。我有几百GB的文本要处理,所以我非常希望我的写入吞吐量达到50 MB / s左右,我知道这个硬件可以做到(上面的xargs慢了几个数量级。)
标准工具箱中有更好的东西吗?如果需要我可以写一些东西,但我更喜欢使用已经存在的文本过滤器。