Fish Shell:
Working with CSV

How to:

Fish Shell, by itself, doesn’t have built-in functions specifically designed for CSV manipulation. However, you can leverage Unix utilities like awk, sed, and cut for basic operations or use specialized tools like csvkit for more advanced tasks.

Reading a CSV file and printing the first column:

Using cut to extract the first column:

cut -d ',' -f1 data.csv

Sample output:

Name
Alice
Bob

Filtering CSV rows based on column value:

Using awk to find rows where the second column matches “42”:

awk -F, '$2 == "42" { print $0 }' data.csv

Sample output:

Bob,42,London

Modifying a CSV file (e.g., adding a column):

Using awk to add a column with a static value “NewColumn”:

awk -F, 'BEGIN {OFS=","} {print $0,"NewColumn"}' data.csv > modified.csv

Sample output in modified.csv:

Name,Age,City,NewColumn
Alice,30,New York,NewColumn
Bob,42,London,NewColumn

Using csvkit for more advanced operations:

First, ensure you have csvkit installed. If not, install it using pip: pip install csvkit.

Converting a CSV file to JSON:

csvjson data.csv > data.json

Sample data.json output:

[{"Name":"Alice","Age":"30","City":"New York"},{"Name":"Bob","Age":"42","City":"London"}]

Filtering with csvkit’s csvgrep:

csvgrep -c 2 -m 42 data.csv

This command replicates the filtering task but using csvkit, targeting column 2 for the value “42”.

In conclusion, while Fish Shell itself might not offer direct CSV manipulation capabilities, its seamless integration with Unix utilities and the availability of tools like csvkit provide powerful options for working with CSV files.