我試圖並行運行此:GNU並行內的Perl命令?
parallel perl -pe '!/^step/ && s/(\S+)/sprintf("%.2e", $1)/ge' {} > {}.fix ::: *
也就是說,我想在當前目錄下的所有文件執行perl的命令,在並行。這不起作用,但我不知道爲什麼。
評論:該perl命令在表定影浮點數。見Replacing precision of floating point numbers in existing file。
我試圖並行運行此:GNU並行內的Perl命令?
parallel perl -pe '!/^step/ && s/(\S+)/sprintf("%.2e", $1)/ge' {} > {}.fix ::: *
也就是說,我想在當前目錄下的所有文件執行perl的命令,在並行。這不起作用,但我不知道爲什麼。
評論:該perl命令在表定影浮點數。見Replacing precision of floating point numbers in existing file。
在bash你可以做一個功能:在巖組
doit() {
perl -pe '!/^step/ && s/(\S+)/sprintf("%.2e", $1)/ge' "$1" > "$2"
}
export -f doit
parallel doit {} {}.fix ::: *
導出功能,需要使用一個變量:
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 ::: *
你是什麼意思*「不工作」*? – Borodin
@Borodin我得到這個錯誤:'zsh:1:找不到匹配:s /(S +)/ sprintf(%。1e,)/ ge'。 – becko
@Borodin Zsh的具體問題是什麼?我的命令在Bash中運行正常(不能測試,因爲我沒有在這裏啓用Bash)?我問,因爲你標記了zsh。 – becko