例如,当尝试一次处理 128 个字节的文件时,此方法有效:
cat input.dat | parallel --pipe --recend '' -k --block-size 128 "<command>" > output.dat
但是这个
parallel -a input.dat --pipe --recend '' -k --block-size 128 "<command>" > output.dat
抛出错误:
parallel: Warning: A NUL character in the input was replaced with \0.
parallel: Warning: NUL cannot be passed through in the argument list.
parallel: Warning: Did you mean to use the --null option?
为什么?
差异来自于
parallel
处理输入的方式:
cat input.dat | parallel ...
:--pipe
将其分割成块,而不解释 NUL 字符。
parallel -a input.dat ...
:-a
选项将 input.dat
读取为参数列表,其中 NUL 字符会导致警告,除非使用 --null
。
要解决
-a
的问题,请使用:
parallel -a input.dat --pipe --recend '' -k --block-size 128 --null "<command>" > output.dat