dan*_*boo 6 csv parallel-processing shell gnu
是否有可能以一种重复第一行原始输入到每个子作业的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视频,并阅读了手册页,但是如果可能的话,我只是无法看到它是如何完成的.
谢谢!
今天你可以--skip-first-line使用echo以下方法添加标题:
seq 10 | parallel --skip-first-line --pipe '(echo hea,der; cat) | my_prog'
Run Code Online (Sandbox Code Playgroud)
在将来的版本中,您将拥有选项'--header',它将是与标题末尾匹配的正则表达式(例如:'\n'表示一行或'\n.*\n'表示两行或'' ---'包括第一个---)
- 编辑 -
最新版本的GNU Parallel现在可以:
parallel --pipe --header : my_program
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1272 次 |
| 最近记录: |