Bird
Raised Fist0
Linux CLIscripting~20 mins

awk patterns and actions in Linux CLI - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Awk Patterns 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 awk command?
Given a file data.txt with the following content:
apple 10
banana 20
cherry 30
apple 40

What is the output of this command?
awk '$1 == "apple" {print $2}' data.txt
A
10
40
B
apple
apple
C
20
30
D
10
20
30
40
Attempts:
2 left
💡 Hint
Look for lines where the first word is 'apple' and print the second word.
💻 Command Output
intermediate
2:00remaining
What does this awk script print?
Consider the file numbers.txt with content:
5
10
15
20
25

What is the output of:
awk '{if ($1 > 15) print $1 * 2; else print $1}' numbers.txt
A
5
10
15
80
100
B
10
20
30
40
50
C
5
10
15
20
25
D
5
10
15
40
50
Attempts:
2 left
💡 Hint
Check which numbers are greater than 15 and double them.
📝 Syntax
advanced
2:00remaining
Which awk command correctly prints the second field only for lines where the first field starts with 'a'?
Choose the correct awk command to print the second field only if the first field starts with the letter 'a'.
Aawk '$1 =~ /^a/ {print $2}' file.txt
Bawk '$1 == /^a/ {print $2}' file.txt
Cawk '$1 ~ /^a/ {print $2}' file.txt
Dawk '$1 = /^a/ {print $2}' file.txt
Attempts:
2 left
💡 Hint
Use the correct operator for regex matching in awk.
💻 Command Output
advanced
2:00remaining
What is the output of this awk script with multiple actions?
Given items.txt content:
pen 5
pencil 3
eraser 2
pen 7

What does this command print?
awk '$1 == "pen" {sum += $2} END {print sum}' items.txt
A12
B
5
7
Cpenpen
D0
Attempts:
2 left
💡 Hint
Sum the second field values only for lines where first field is 'pen'.
🚀 Application
expert
2:00remaining
How many lines does this awk command print?
Given log.txt with:
error 404
info start
error 500
warning low
error 404

How many lines will this command print?
awk '/error/ && $2 == 404' log.txt
A3
B2
C1
D0
Attempts:
2 left
💡 Hint
Count lines containing 'error' and second field equals 404.

Practice

(1/5)
1. In awk, what does a pattern do?
easy
A. It selects which lines to process
B. It changes the file content permanently
C. It saves the output to a file
D. It runs a shell command

Solution

  1. Step 1: Understand the role of patterns in awk

    Patterns in awk are used to match lines in the input data. Only lines matching the pattern are processed.
  2. Step 2: Differentiate patterns from actions

    Actions define what to do with matched lines, but patterns decide which lines to select.
  3. Final Answer:

    It selects which lines to process -> Option A
  4. Quick Check:

    Pattern = line selector [OK]
Hint: Patterns filter lines before actions run [OK]
Common Mistakes:
  • Thinking patterns change file content
  • Confusing patterns with output commands
  • Assuming patterns run shell commands
2. Which of these is the correct syntax to print the first field of each line using awk?
easy
A. awk '{print $}' file.txt
B. awk 'print $1' file.txt
C. awk '{print 1}' file.txt
D. awk '{print $1}' file.txt

Solution

  1. Step 1: Identify correct awk print syntax

    The print statement must be inside braces {} and use $1 to refer to the first field.
  2. Step 2: Check each option

    awk '{print $1}' file.txt uses correct braces and $1. awk 'print $1' file.txt misses braces. awk '{print 1}' file.txt prints number 1 literally. awk '{print $}' file.txt uses invalid $.
  3. Final Answer:

    awk '{print $1}' file.txt -> Option D
  4. Quick Check:

    Print first field = awk '{print $1}' [OK]
Hint: Always use braces {} around actions in awk [OK]
Common Mistakes:
  • Omitting braces around print
  • Using $ without field number
  • Printing literal numbers instead of fields
3. What is the output of this command on a file with lines:
1: apple 10
2: banana 20
3: cherry 30

awk '$2 > 15 {print $1}' file.txt?
medium
A. apple
B. banana cherry
C. 10 20 30
D. apple banana cherry

Solution

  1. Step 1: Understand the pattern condition

    The pattern '$2 > 15' means only lines where the second field is greater than 15 are selected.
  2. Step 2: Apply the condition to each line

    Line 1: 10 > 15? No. Line 2: 20 > 15? Yes. Line 3: 30 > 15? Yes.
  3. Step 3: Print the first field of matching lines

    For lines 2 and 3, print $1: 'banana' and 'cherry'.
  4. Final Answer:

    banana cherry -> Option B
  5. Quick Check:

    Fields > 15 print first field = banana, cherry [OK]
Hint: Check pattern filters before printing fields [OK]
Common Mistakes:
  • Printing all lines ignoring pattern
  • Printing second field instead of first
  • Confusing numeric comparison with string
4. Identify the error in this awk command:
awk '$1 == "apple" print $2' file.txt
medium
A. Incorrect field number
B. Wrong comparison operator
C. Missing braces {} around action
D. Quotes around apple should be single quotes

Solution

  1. Step 1: Check awk syntax for pattern and action

    Awk requires actions to be inside braces {} after the pattern.
  2. Step 2: Identify missing braces

    The command misses braces around 'print $2', causing syntax error.
  3. Final Answer:

    Missing braces {} around action -> Option C
  4. Quick Check:

    Actions need braces {} [OK]
Hint: Always put actions inside {} in awk [OK]
Common Mistakes:
  • Omitting braces around actions
  • Using wrong comparison operators
  • Misquoting strings inside patterns
5. You want to print the second field only for lines where the first field starts with 'a' or 'b'. Which awk command achieves this?
hard
A. awk '$1 ~ /^[ab]/ {print $2}' file.txt
B. awk '$1 == "a" || $1 == "b" {print $2}' file.txt
C. awk '$1 = "a" || $1 = "b" {print $2}' file.txt
D. awk '$1 ~ /a|b/ {print $2}' file.txt

Solution

  1. Step 1: Understand pattern for fields starting with 'a' or 'b'

    The regex /^[ab]/ matches strings starting with 'a' or 'b'. The operator ~ means regex match.
  2. Step 2: Check each option's correctness

    awk '$1 ~ /^[ab]/ {print $2}' file.txt uses correct regex and syntax. awk '$1 == "a" || $1 == "b" {print $2}' file.txt compares whole field to 'a' or 'b' exactly, not starts with. awk '$1 = "a" || $1 = "b" {print $2}' file.txt uses assignment '=' instead of comparison '=='. awk '$1 ~ /a|b/ {print $2}' file.txt matches anywhere 'a' or 'b' appears, not just start.
  3. Final Answer:

    awk '$1 ~ /^[ab]/ {print $2}' file.txt -> Option A
  4. Quick Check:

    Regex match start with a or b = awk '$1 ~ /^[ab]/ {print $2}' file.txt [OK]
Hint: Use regex ^[ab] to match start of field [OK]
Common Mistakes:
  • Using = instead of == for comparison
  • Matching exact string instead of start
  • Using wrong regex without ^ anchor
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