Gawk 和 GNU 并行到一个文件?

Gawk and GNU Parallel to a single file?

将以下脚本与 Gawk 4.1 结合使用,根据其中的日期列将多个源文件转换并合并为更少的 csv 文件,我正在尝试使用 GNU Parallel 来加快速度:

BEGIN { FS="-"; OFS="," }
{
    gsub(/\|/, ",", )  # pipe to csv
    gsub(/,[^0-9]|,$/, ",0", )  # null measures to zero
    print "-""-"" "":00", , ,  >> "out_"    ".csv"
}

然而,输出行以奇怪的方式合并,字段值部分合并。我尝试了并行选项 --group、--lb 和 -k 的组合,但没有成功。

是否有一种 Gawk 和 Parallel 方法可以让多个 Awk 安全地同时写入文件?

同样的问题也发生在 Mawk v1.3.4

我在我的评论中提到了这些方面的解决方案:

parallel gawk -v job={#} -f ./script.awk {} ::: *.csv

其中 script.awk 除了您的逻辑之外还包含以下元素:

BEGIN{out="out_" job "-a-b-c.csv"; print out}

输出

out_1-a-b-c.csv
out_2-a-b-c.csv
out_3-a-b-c.csv
out_4-a-b-c.csv