Bash:
Working with CSV
How to:
Reading a CSV File Line by Line
while IFS=, read -r column1 column2 column3
do
echo "Column 1: $column1, Column 2: $column2, Column 3: $column3"
done < sample.csvSample output:
Column 1: id, Column 2: name, Column 3: email
...Filtering CSV Rows Based on a Condition
Using awk, you can easily filter rows. For example, to find rows where the second column equals “Alice”:
awk -F, '$2 == "Alice" { print $0 }' sample.csvModifying a Column Value
To change the second column to uppercase:
awk -F, 'BEGIN {OFS=",";} { $2 = toupper($2); print $0; }' sample.csvSorting a CSV File Based on a Column
You can sort a CSV file based on, let’s say, the third column (numerically):
sort -t, -k3,3n sample.csvUsing csvkit for More Complex Tasks
csvkit is a suite of command-line tools for converting to and working with CSV. It can be installed via pip.
To convert a JSON file to CSV:
in2csv data.json > data.csvTo query a CSV file using SQL:
csvsql --query "SELECT name FROM sample WHERE id = 10" sample.csvNote: Installing csvkit requires Python and can be done using pip install csvkit.