3 KiB
| jupytext | kernelspec | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Lesson 2: Piping commands
We've been using one command at a time, but what if we want to use multiple?
For example let's say I want to only see what fruits there are and their availability from fruits_extended.csv in a nicely formatted table.
Selecting the columns
Take a brief look at qsv select:
:tags: ["scroll-output"]
qsv select -h
There are several ways to select the columns we want. Let's take a look at the headers first:
:tags: ["scroll-output"]
qsv headers fruits_extended.csv
We only want data within the fruit and availability columns. Let's try selecting the data within those columns:
:tags: ["scroll-output"]
qsv select 1,4 fruits_extended.csv
Great, we got the column data that we're looking for. But how do we run this data through qsv table?
Command redirection
If you're not sure what stdin, stdout, and stderr are then we recommend reading the Command data streams section in the Appendix.
For example let's say we want to display the previous output with qsv table. We can run the following to pipe the output into qsv table:
:tags: ["scroll-output"]
qsv select 1,4 fruits_extended.csv | qsv table
Now we've got what we were looking for!
Notice that the output of the first command qsv select 1,4 fruits_extended.csv was used as the input for qsv table.
Exercise 2: Piping commands example
Pipe the first and second columns of fruits_extended.csv into qsv table.
After running that pipeline and viewing the output, try adding qsv transpose before qsv table in the pipeline and see what the output looks like.
Here we show the usage text of
qsv selectfor your reference. Solve this exercise using Thebe, Binder or locally.
:tags: ["scroll-output"]
qsv select --help
::::{admonition} Solution :class: dropdown seealso
For the first part, you may run:
qsv select 1,2 fruits_extended.csv | qsv table
The output should be:
fruit price
apple 2.50
banana 3.00
strawberry 1.50
orange 2.00
pineapple 3.50
grape 4.00
mango 1.80
watermelon 6.00
pear 2.20
The second part is adding qsv transpose within the pipeline:
qsv select 1,2 fruits_extended.csv | qsv transpose | qsv table
The output should be:
fruit apple banana strawberry orange pineapple grape mango watermelon pear
price 2.50 3.00 1.50 2.00 3.50 4.00 1.80 6.00 2.20
::::