Bird
Raised Fist0
Bash Scriptingscripting~20 mins

Why scripts often process text in Bash Scripting - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Text Processing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output of this text processing command?
Consider the following bash command that processes text. What will it output?
Bash Scripting
echo "apple banana cherry" | awk '{print $2}'
Abanana
Bapple banana
Capple
Dcherry
Attempts:
2 left
💡 Hint
The awk command prints the second word from the input line.
🧠 Conceptual
intermediate
2:00remaining
Why do scripts often use text processing tools?
Why do many scripts use tools like grep, awk, and sed to process text?
ABecause scripts cannot handle binary data at all.
BBecause text is a universal format that is easy to read and manipulate in scripts.
CBecause text processing tools are faster than compiled programs.
DBecause scripts only work with files that have .txt extension.
Attempts:
2 left
💡 Hint
Think about why text is common in data exchange and logs.
📝 Syntax
advanced
2:00remaining
Which command correctly extracts the first column from a CSV file?
Given a CSV file with comma-separated values, which bash command correctly extracts the first column?
Aawk -F ',' '{print $1}' file.csv
Bcut -f 1 file.csv
Csed 's/,.*//' file.csv
Dcut -d ',' -f 1 file.csv
Attempts:
2 left
💡 Hint
The delimiter for CSV is a comma, so specify it explicitly.
🔧 Debug
advanced
2:00remaining
Why does this script fail to extract the username?
This bash script tries to extract the username from the line 'user: alice' but fails. Why? SCRIPT: line='user: alice' username=$(echo $line | cut -d ':' -f 2) echo "$username"
AThe cut command uses the wrong delimiter.
BThe variable line is not quoted in the echo command.
CThe extracted username has a leading space that is not trimmed.
DThe script is missing a shebang line.
Attempts:
2 left
💡 Hint
Look carefully at the output and spaces after the colon.
🚀 Application
expert
2:00remaining
How many lines will this script output?
This bash script filters lines containing 'error' from a log file and counts unique error types. SCRIPT: cat logfile.txt | grep 'error' | cut -d ':' -f 2 | sort | uniq If logfile.txt contains 10 lines with 'error', but 3 unique error types, how many lines will the script output?
A3
B10
C1
D0
Attempts:
2 left
💡 Hint
uniq outputs only unique lines after sorting.

Practice

(1/5)
1. Why do many bash scripts process text files instead of other file types?
easy
A. Because text files are easy to read and manipulate with simple commands
B. Because binary files are faster to process
C. Because text files take up less disk space
D. Because scripts cannot open images or videos

Solution

  1. Step 1: Understand file types in scripting

    Text files contain readable characters, making them easy to handle with commands like grep and sed.
  2. Step 2: Compare text and binary files

    Binary files need special tools and are harder to manipulate directly in scripts.
  3. Final Answer:

    Because text files are easy to read and manipulate with simple commands -> Option A
  4. Quick Check:

    Text files = easy manipulation [OK]
Hint: Text files are simple to handle with basic commands [OK]
Common Mistakes:
  • Thinking binary files are easier to process
  • Assuming scripts can't open non-text files
  • Confusing file size with ease of processing
2. Which of the following is the correct syntax to search for the word error in a file named log.txt using grep?
easy
A. grep 'log.txt' error
B. grep error log.txt
C. grep -f error log.txt
D. grep log.txt error

Solution

  1. Step 1: Identify grep command syntax

    The correct syntax is grep [pattern] [file].
  2. Step 2: Match pattern and file

    Here, error is the pattern and log.txt is the file to search.
  3. Final Answer:

    grep error log.txt -> Option B
  4. Quick Check:

    grep pattern file = correct syntax [OK]
Hint: Remember grep syntax: grep pattern filename [OK]
Common Mistakes:
  • Swapping pattern and filename
  • Using incorrect flags like -f
  • Putting filename before pattern
3. What will be the output of this bash command?
echo "apple banana cherry" | awk '{print $2}'
medium
A. apple
B. cherry
C. apple banana
D. banana

Solution

  1. Step 1: Understand the input and awk command

    The input string is "apple banana cherry". Awk splits input by spaces and $2 refers to the second word.
  2. Step 2: Identify the second word

    The second word is "banana".
  3. Final Answer:

    banana -> Option D
  4. Quick Check:

    awk $2 = second word = banana [OK]
Hint: awk $2 prints the second word from input [OK]
Common Mistakes:
  • Confusing $1 and $2 fields
  • Expecting full line output
  • Not splitting input by spaces
4. This script is intended to replace all occurrences of 'cat' with 'dog' in a file named pets.txt. What is wrong?
sed 's/cat/dog/g pets.txt'
medium
A. sed cannot replace text
B. File name should come before the command
C. Missing closing single quote after g
D. The command should use double quotes instead of single quotes

Solution

  1. Step 1: Check sed command syntax

    The substitution command must be enclosed in quotes fully: 's/cat/dog/g'
  2. Step 2: Identify the error in the given command

    The closing single quote is missing after the g, causing a syntax error.
  3. Final Answer:

    Missing closing single quote after g -> Option C
  4. Quick Check:

    Quotes must enclose entire sed expression [OK]
Hint: Check for matching quotes around sed expressions [OK]
Common Mistakes:
  • Forgetting to close quotes
  • Misplacing file name inside quotes
  • Thinking sed can't replace text
5. You want to extract all lines containing the word error from multiple log files and save them into a single file errors.txt. Which script snippet correctly does this?
hard
A. grep error *.log > errors.txt
B. grep error errors.txt > *.log
C. grep > errors.txt *.log
D. grep *.log error > errors.txt

Solution

  1. Step 1: Understand grep usage with multiple files

    Using grep error *.log searches for 'error' in all files ending with .log.
  2. Step 2: Redirect output to a file

    The > operator sends all matching lines into errors.txt.
  3. Final Answer:

    grep error *.log > errors.txt -> Option A
  4. Quick Check:

    grep pattern files > outputfile [OK]
Hint: Use grep pattern files > outputfile to save matches [OK]
Common Mistakes:
  • Placing > before files
  • Swapping pattern and files
  • Using incorrect order of arguments
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard