我试图并行运行此:
parallel perl -pe '!/^step/ && s/(\S+)/sprintf("%.2e", $1)/ge' {} > {}.fix ::: *
也就是说,我要在当前目录中的所有文件上并行执行perl命令。这是行不通的,但我不知道为什么。
注释:perl命令正在修复表中的浮点数。请参阅替换现有文件中的浮点数的精度。
在Bash中,您可以创建一个函数:
doit() {
perl -pe '!/^step/ && s/(\S+)/sprintf("%.2e", $1)/ge' "$1" > "$2"
}
export -f doit
parallel doit {} {}.fix ::: *
在Zsh中导出函数需要使用一个变量:
doit() {
perl -pe '!/^step/ && s/(\S+)/sprintf("%.2e", $1)/ge' "$1" > "$2"
}
PARALLEL_ENV="$(typeset -f doit)"
parallel doit {} {}.fix ::: *
另外,您可以引用perl表达式和重定向(在Bash中也可以使用):
parallel perl -pe \''!/^step/ && s/(\S+)/sprintf("%.2e", $1)/ge'\' {} '>' {}.fix ::: *
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句