A CSV (Comma-Separated Values) file is a simple text file where each line represents a row of data, and each value in the row is separated by a comma. It is often used to store tabular data like a spreadsheet.
Click to reveal answer
beginner
How can you print the second column of a CSV file using bash?
You can use the cut command: cut -d',' -f2 filename.csv This tells bash to use comma as the delimiter and print the second field.
Click to reveal answer
intermediate
What does the IFS variable do in bash when processing CSV files?
IFS stands for Internal Field Separator. It tells bash what character to use to split a line into parts. For CSV files, setting IFS=',' helps split each line by commas.
Click to reveal answer
intermediate
Why might using awk be better than cut for processing CSV files?
awk can handle more complex tasks like filtering rows, processing multiple columns, and performing calculations. It also handles different delimiters easily and can skip headers.
Click to reveal answer
beginner
Show a simple bash script snippet to read a CSV file line by line and print the first and third columns.
Example:
while IFS=',' read -r col1 col2 col3; do
echo "First: $col1, Third: $col3"
done < filename.csv
Click to reveal answer
Which bash command splits a line into fields based on a delimiter?
AIFS
Bgrep
Cecho
Dsed
✗ Incorrect
IFS sets the delimiter for splitting lines into fields in bash.
What does the command cut -d',' -f1 file.csv do?
ACounts the number of commas in the file
BDeletes the first column of the CSV file
CPrints the first column of the CSV file
DPrints the last column of the CSV file
✗ Incorrect
cut with -d',' uses comma as delimiter and -f1 prints the first field (column).
Which tool is best for complex CSV processing like filtering rows and calculations?
Atail
Bcat
Chead
Dawk
✗ Incorrect
awk is designed for powerful text processing including CSV files.
In bash, how do you read a CSV file line by line?
AUsing <code>echo</code>
BUsing a while loop with <code>read</code>
CUsing <code>ls</code>
DUsing <code>rm</code>
✗ Incorrect
A while loop with read reads each line from a file.
What does setting IFS=',' do before reading a CSV line?
ASplits the line into fields by commas
BDeletes commas from the line
CChanges the file encoding
DPrints the whole line as one field
✗ Incorrect
Setting IFS=',' tells bash to split input lines at commas.
Explain how to read a CSV file line by line in bash and access specific columns.
Think about how bash splits lines and stores parts in variables.
You got /4 concepts.
Describe the advantages of using awk over cut for processing CSV files.
Consider what tasks are simple or complex in CSV processing.
You got /4 concepts.
Practice
(1/5)
1. What does the cut -d, -f2 file.csv command do when processing a CSV file?
easy
A. Deletes the second column from the CSV file
B. Extracts the second column from the CSV file using comma as delimiter
C. Counts the number of commas in the CSV file
D. Replaces commas with tabs in the CSV file
Solution
Step 1: Understand the cut command with delimiter
The -d, option sets the delimiter to a comma, which is the separator in CSV files.
Step 2: Extract the specified field
The -f2 option extracts the second field (column) from each line of the file.
Final Answer:
Extracts the second column from the CSV file using comma as delimiter -> Option B
Quick Check:
cut -d, -f2 extracts column 2 [OK]
Hint: Use -d for delimiter and -f for field number in cut [OK]
Common Mistakes:
Confusing -f with line number
Using wrong delimiter character
Thinking cut deletes columns
2. Which of the following is the correct syntax to print the third column of a CSV file using awk?
easy
A. awk -F, '{print $3}' file.csv
B. awk -d',' '{print $3}' file.csv
C. awk -F',' 'print $3' file.csv
D. awk '{print $3}' -F',' file.csv
Solution
Step 1: Identify the field separator option in awk
The correct option to set the field separator is -F,, which tells awk to split fields by commas.
Step 2: Use the print statement correctly
The print statement must be inside single quotes and include curly braces: {print $3} to print the third column.
Final Answer:
awk -F, '{print $3}' file.csv -> Option A
Quick Check:
Use -F for delimiter and print $3 inside braces [OK]
Hint: Use -F, and print $column inside braces in awk [OK]
Common Mistakes:
Using -d instead of -F for delimiter
Omitting curly braces around print
Placing -F option after the script
3. Given a CSV file data.csv with content:
name,age,city
Alice,30,New York
Bob,25,Los Angeles
Carol,27,Chicago
What is the output of the command awk -F, '$2 > 26 {print $1}' data.csv?
medium
A. Alice
B. Alice
Bob
Carol
C. Bob
Carol
D. Alice
Carol
Solution
Step 1: Understand the awk condition and field separator
The command uses -F, to split fields by commas. The condition $2 > 26 filters rows where the second field (age) is greater than 26.
Step 2: Apply the condition to each row
Rows: - Header: 'age' > 26? No (string) - Alice,30: 30 > 26? Yes, print $1 = Alice - Bob,25: 25 > 26? No - Carol,27: 27 > 26? Yes, print $1 = Carol
Final Answer:
Alice
Carol -> Option D
Quick Check:
Filter ages > 26, print names [OK]
Hint: Filter with $column condition and print desired field [OK]
Common Mistakes:
Including header row in output
Confusing field numbers
Not using correct field separator
4. You wrote this command to extract the first column from a CSV file: cut -f1 -d',' file.csv But it returns the whole line instead of just the first column. What is the likely problem?
medium
A. The -f1 option is invalid
B. The file is empty
C. The delimiter option -d',' is missing or incorrect
D. cut cannot process CSV files
Solution
Step 1: Check the delimiter option usage
The command uses -d',', which is incorrect. The single quotes make the delimiter the string ',' (quote comma quote) instead of plain comma (,). cut searches for ',' which isn't in the CSV.
Step 2: Understand cut behavior without correct delimiter
Without splitting on ,, cut falls back to default (TAB), treating each line as one field, so -f1 outputs the entire line.
Final Answer:
The delimiter option -d',' is missing or incorrect -> Option C
Quick Check:
cut needs -d, (no quotes around comma) to split fields [OK]
Hint: Always specify -d, for CSV files with cut [OK]
Common Mistakes:
Forgetting -d option
Using wrong delimiter character
Assuming cut auto-detects delimiter
5. You want to create a new CSV file containing only rows where the city is 'Chicago' from data.csv. Which bash command correctly filters and saves these rows?
hard
A. awk -F, '$3 == "Chicago"' data.csv > chicago.csv
B. grep 'Chicago' data.csv > chicago.csv
C. cut -d',' -f3 data.csv | grep 'Chicago' > chicago.csv