Extract and Combine Text Columns Using cut and paste
📖 Scenario: You work in a small office where you receive a text file with employee data. The file has names and departments separated by spaces. You want to extract the names and departments separately, then combine them side by side into a new file.
🎯 Goal: Learn how to use the cut command to extract columns from a text file and the paste command to combine columns side by side.
📋 What You'll Learn
Use cut to extract the first column (names) from employees.txt into names.txt.
Use cut to extract the second column (departments) from employees.txt into departments.txt.
Use paste to combine names.txt and departments.txt side by side into combined.txt.
Print the contents of combined.txt to the terminal.
💡 Why This Matters
🌍 Real World
Extracting and combining columns from text files is common when working with logs, reports, or CSV data in automation scripts.
💼 Career
Knowing how to manipulate text files with commands like <code>cut</code> and <code>paste</code> is useful for system administrators, data analysts, and anyone automating data processing tasks.
Progress0 / 4 steps
1
Create the initial data file
Create a file called employees.txt with these exact lines: Alice Sales Bob Marketing Charlie IT
Bash Scripting
Hint
Use echo with -e and redirect output to employees.txt.
2
Extract names and departments into separate files
Use cut to extract the first column (names) from employees.txt into a file called names.txt. Then use cut to extract the second column (departments) into a file called departments.txt.
Bash Scripting
Hint
Use cut -d ' ' -f1 for the first column and cut -d ' ' -f2 for the second column.
3
Combine the extracted columns side by side
Use the paste command to combine names.txt and departments.txt side by side into a new file called combined.txt.
Bash Scripting
Hint
Use paste with the two filenames and redirect output to combined.txt.
4
Display the combined file
Print the contents of combined.txt to the terminal using cat.
Bash Scripting
Hint
Use cat combined.txt to show the file contents.
Practice
(1/5)
1. What does the cut command do in bash scripting?
easy
A. Deletes lines containing a specific pattern
B. Extracts specific parts of each line from a file or input
C. Joins lines from multiple files side by side
D. Counts the number of lines in a file
Solution
Step 1: Understand the purpose of cut
The cut command is used to extract sections from each line of input, usually by specifying fields or characters.
Step 2: Compare with other commands
paste joins lines side by side, grep deletes or filters lines, and wc counts lines. So, only cut extracts parts of lines.
Final Answer:
Extracts specific parts of each line from a file or input -> Option B
Quick Check:
cut = Extract parts [OK]
Hint: Remember: cut slices parts, paste sticks lines side by side [OK]
Common Mistakes:
Confusing cut with paste
Thinking cut deletes lines
Assuming cut counts lines
2. Which of the following is the correct syntax to extract the 2nd field from a colon-separated file using cut?
easy
A. cut -f 2 -d ':' filename
B. cut -d 2 -f ':' filename
C. cut -c 2 filename
D. cut -f ':' -d 2 filename
Solution
Step 1: Identify correct option flags for cut
The -f flag specifies the field number, and -d specifies the delimiter character.
Step 2: Match syntax to extract 2nd field with ':' delimiter
cut -f 2 -d ':' filename uses -f 2 and -d ':', which is the correct order and syntax.
Final Answer:
cut -f 2 -d ':' filename -> Option A
Quick Check:
Fields (-f) then delimiter (-d) [OK]
Hint: Use -f for field, -d for delimiter in cut [OK]
Common Mistakes:
Swapping -f and -d flags
Using -c instead of -f for fields
Putting delimiter as field number
3. Given two files, file1.txt contains: apple
banana
cherry and file2.txt contains: red
yellow
red What is the output of paste file1.txt file2.txt?
medium
A. appleyellow
bananared
cherryred
B. apple
banana
cherry
red
yellow
red
C. apple red
banana yellow
cherry red
D. apple,red
banana,yellow
cherry,red
Solution
Step 1: Understand paste command behavior
paste joins lines from two files side by side separated by a tab by default.
Step 2: Combine lines from both files line by line
Line 1: apple + tab + red Line 2: banana + tab + yellow Line 3: cherry + tab + red
Final Answer:
apple red
banana yellow
cherry red -> Option C
Quick Check:
paste joins lines side by side [OK]
Hint: paste joins lines horizontally, not vertically [OK]
Common Mistakes:
Thinking paste stacks lines vertically
Assuming paste adds commas
Ignoring tab separator default
4. What is wrong with this command to extract the first 3 characters of each line? cut -c 1-3 file.txt It returns an error. Why?
medium
A. The command is correct; error likely from missing file
B. The range should be specified as 1,3 not 1-3
C. The -c option does not accept ranges
D. The syntax is correct; error is from file permissions
Solution
Step 1: Check cut syntax for character ranges
cut -c 1-3 is the correct syntax to extract characters 1 to 3.
Step 2: Consider other reasons for error
If an error occurs, it is likely due to the file not existing or permission issues, not syntax.
Final Answer:
The command is correct; error likely from missing file -> Option A
Quick Check:
cut -c 1-3 is valid syntax [OK]
Hint: Check file existence before blaming cut syntax [OK]
Common Mistakes:
Thinking cut -c doesn't accept ranges
Using commas instead of dash for ranges
Ignoring file existence or permissions
5. You have two files: names.txt with: John
Jane
Doe and ages.txt with: 25
30 You want to create a file combined.txt where each line has name and age separated by a comma. Missing ages should show as 'N/A'. Which command sequence achieves this?
hard
A. paste -d ',' names.txt ages.txt > combined.txt
B. paste names.txt ages.txt | sed 's/$/,N\/A/' > combined.txt
C. cut -d ',' -f 1 names.txt > combined.txt
D. paste -d ',' names.txt ages.txt | sed 's/,$/,N\/A/' > combined.txt
Solution
Step 1: Use paste with comma delimiter
paste -d ',' names.txt ages.txt joins lines with a comma.
Step 2: Handle missing ages with sed
Lines missing age end with a comma only, so sed 's/,$/,N\/A/' replaces trailing comma with ',N/A'.
Step 3: Redirect output to combined.txt
Using > combined.txt saves the result to the file.
Final Answer:
paste -d ',' names.txt ages.txt | sed 's/,$/,N\/A/' > combined.txt -> Option D
Quick Check:
paste + sed fixes missing fields [OK]
Hint: Use paste with -d and sed to fix missing fields [OK]
Common Mistakes:
Not handling missing age lines
Using cut instead of paste for joining
Forgetting to redirect output to file
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.