5

我有一个简单的 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 的进度仍然乱码。

任何帮助表示赞赏。谢谢阿尔文

4

2 回答 2

3

您看到的行为不是 GNU Parallel 的设计目的:--progress 通常被发送到 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

于 2013-09-17T09:41:37.623 回答
0

尝试使用 exec 在子 shell 中完全重定向它:

: > path_count.csv  ## truncate file
cat full_path.csv | parallel --progress -j +0 'exec >>path_count.csv; echo -n {},; pdfgrep -c [^_] {};'
于 2013-09-16T22:42:07.777 回答