【发布时间】:2013-09-08 04:33:40
【问题描述】:
我正在尝试并行化 perl 脚本的使用。 perl 脚本的输入和输出参数从目录中获取文件名。这对于 gnu 并行很简单。
ls dir | parallel script.pl --input {} --output {.}.out
但是,脚本中的一个附加参数要求我从每个文件中获取第一行和最后一行、第二列的值......类似于
ls dir | parallel script.pl --input {} --output {.}.out --otherargs range:{1}-{2}
其中 {1} 和 {2} 派生自先前/同时使用 awk 或 sed 以获取这些值,例如
awk 'NR==1 {print $2}; END {print $2}'
但是我应该在哪里放置(如何放置)这个类似 awk 的步骤在“工作流程”中以允许 perl 脚本使用它?
看着
Change text in argument for xargs (or GNU Parallel)
正确的方法就是这样做吗?
ls | parallel script.pl --input {} --output {.}.out --otherargs range:{1}-{2} :::: <(awk 'NR==1 {print $2}) <(awk 'END {print $2})
谢谢。
【问题讨论】:
-
awk 'NR==1 {print $2}'会在哪里接受它的输入?也来自ls? -
是的,就是这样。 script.pl 和 awk 都从文件列表中获取输入。
标签: perl awk arguments gnu-parallel