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
将以下脚本与 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