输出到文件时GNU并行输出进度

时间:2013-09-16 21:46:16

标签: bash parallel-processing gnu-parallel

我有一个简单的bash脚本可以运行:

cat full_path.csv | parallel --progress -j +0 'echo -n {},; pdfgrep -c [^_] {};' > path_count.csv

并行进度指示器"--progress",写入文件path_count.csv。我只希望echo {}pdfgrep {}写入文件,同时向屏幕显示--progress输出。

如果我这样做:

cat full_path.csv | parallel --progress -j +0  'echo -n {},>>path_count.csv; pdfgrep -c [^_] {}>>path_count.csv;'

文件path_count仍然出现乱码。

感谢任何帮助。谢谢 阿尔文

2 个答案:

答案 0 :(得分:1)

你看到的行为不是GNU Parallel的目的: - 执行通常发送到STDERR而不是STDOUT,原因如下:

$ seq 3 | bin/parallel --progress echo {} >/tmp/out

Computers / CPU cores / Max jobs to run
1:local / 8 / 3

Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
local:0/3/100%/0.0s
$ cat /tmp/out
1
2
3

是否对GNU Parallel进行了本地修改?你能在其他系统上重现这个问题吗?

PS:而不是'echo -n'为什么尝试: - tag

答案 1 :(得分:0)

尝试使用exec:

在子shell中完全重定向它
: > path_count.csv  ## truncate file
cat full_path.csv | parallel --progress -j +0 'exec >>path_count.csv; echo -n {},; pdfgrep -c [^_] {};'