小编dan*_*boo的帖子

使用gnu parallel处理带标题的CSV文件

是否有可能以一种重复第一行原始输入到每个子作业的STDIN的方式调用gnu parallel?

我有一个CSV文件,顶部有一个标题行.例如:

> cat large.csv
id,count
abc,123
def,456
Run Code Online (Sandbox Code Playgroud)

我有一个工具可以按名称而不是位置提取列:

> csv_extract large.csv count
123
456
Run Code Online (Sandbox Code Playgroud)

我可以将这些值按顺序汇总为:

> csv_extract large.csv count | awk '{ SUM += $1 } END { print SUM }'
579
Run Code Online (Sandbox Code Playgroud)

我拥有的实际文件要大得多,操作比求和更复杂,但同样的原则也适用.我想使用gnu parallel来处理文件,但我不知道是否可以告诉gnu parallel为每个作业重复CSV头.

理想情况下,我可以运行以下操作:

> cat large.csv | parallel --pipe --repeat-first-line "csv_extract /dev/stdin count | awk '{ SUM += $1 } END { print SUM }'"
579
Run Code Online (Sandbox Code Playgroud)

我已经编写了上面的--repeat-first-line选项来表示我无法弄清楚的功能.我观看了YouTube视频,并阅读了手册页,但是如果可能的话,我只是无法看到它是如何完成的.

谢谢!

  • danboo

csv parallel-processing shell gnu

6
推荐指数
1
解决办法
1272
查看次数

标签 统计

csv ×1

gnu ×1

parallel-processing ×1

shell ×1