shenwei356 / csvtk

A cross-platform, efficient and practical CSV/TSV toolkit in Golang
http://bioinf.shenwei.me/csvtk
MIT License
985 stars 86 forks source link

Allow `summary` to specify fields fuzzily like with other subcommands #277

Open ynadji opened 1 month ago

ynadji commented 1 month ago

Prerequisites

Describe your issue

I wanted to get the max of every column in a wide dataset with csvtk summary, but had to specify each column by hand. I think being able to use fuzzy field (and operator!) matches would be pretty cool. Some examples:

# Give the max for every column.
¡ echo -e 'a,b,c\n1,2,3\n4,5,6\n7,8,9' | csvtk summary -f "*:max"
[ERRO] column "*" not existed in file: -

# What I need to manually do to make it work
¡ echo -e 'a,b,c\n1,2,3\n4,5,6\n7,8,9' | csvtk summary -f a:max -f b:max -f c:max
a:max,b:max,c:max
7.00,8.00,9.00

# Provide all summaries for column a
¡ echo -e 'a,b,c\n1,2,3\n4,5,6\n7,8,9' | csvtk summary -f "a:*"  
[ERRO] invalid operation: *. run "csvtk summary --help" for help

# Provide all summaries for all columns
¡ echo -e 'a,b,c\n1,2,3\n4,5,6\n7,8,9' | csvtk summary -f "*:*"  
[ERRO] invalid operation: *. run "csvtk summary --help" for help

Thank you

Thanks so much for this great tool! It's already helping me out a lot in my workflow :).

shenwei356 commented 1 month ago

Sorry, I'm very busy recently. Let's leave it open for the future.

ynadji commented 1 month ago

Sorry, I'm very busy recently. Let's leave it open for the future.

no problem of course! if it bothers me enough i'll try and implement it myself and send a PR 👌