Bird
Raised Fist0
Bash Scriptingscripting~10 mins

awk field extraction in scripts in Bash Scripting - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to print the second field of each line using awk.

Bash Scripting
awk '{ print $[1] }' file.txt
Drag options to blanks, or click blank then click option'
A2
B0
C1
D3
Attempts:
3 left
💡 Hint
Common Mistakes
Using $1 instead of $2 prints the first field.
Using $0 prints the whole line, not a single field.
2fill in blank
medium

Complete the code to print the first and third fields separated by a dash.

Bash Scripting
awk '{ print $[1] "-" $3 }' data.txt
Drag options to blanks, or click blank then click option'
A1
B3
C0
D2
Attempts:
3 left
💡 Hint
Common Mistakes
Using $2 instead of $1 prints the wrong field.
Forgetting to add quotes around the dash causes syntax errors.
3fill in blank
hard

Fix the error in the code to print the last field of each line.

Bash Scripting
awk '{ print $[1] }' file.txt
Drag options to blanks, or click blank then click option'
ANR
BNF
C0
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Using NR prints the line number, not a field.
Using $0 prints the whole line, not a single field.
4fill in blank
hard

Fill both blanks to print fields 2 and 4 separated by a comma.

Bash Scripting
awk '{ print $[1] "," $[2] }' input.txt
Drag options to blanks, or click blank then click option'
A2
B3
C4
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up field numbers causes wrong output.
Forgetting quotes around the comma causes syntax errors.
5fill in blank
hard

Fill all three blanks to create a dictionary of word lengths for words longer than 3 characters.

Bash Scripting
awk '{ if(length($[1]) > [2]) print $[3], length($[3]) }' words.txt
Drag options to blanks, or click blank then click option'
A1
B3
C2
D4
Attempts:
3 left
💡 Hint
Common Mistakes
Using $2 instead of $1 prints wrong fields.
Using 4 instead of 3 changes the filter condition.

Practice

(1/5)
1. What does awk '{print $2}' file.txt do in a bash script?
easy
A. Prints the second word (field) from each line of file.txt
B. Prints the entire line from file.txt
C. Prints the first word (field) from each line of file.txt
D. Prints the number of lines in file.txt

Solution

  1. Step 1: Understand awk field numbering

    Awk splits each line into fields separated by spaces by default. $1 is the first field, $2 is the second, and so on.
  2. Step 2: Analyze the command

    The command prints $2, which is the second field of each line in file.txt.
  3. Final Answer:

    Prints the second word (field) from each line of file.txt -> Option A
  4. Quick Check:

    Awk $2 prints second field [OK]
Hint: Remember $1 is first field, $2 second, etc. [OK]
Common Mistakes:
  • Confusing $2 with line number
  • Thinking it prints entire line
  • Mixing up field numbers starting at 0
2. Which of the following is the correct syntax to print the third field using awk with a comma as the field separator?
easy
A. awk -F ',' '{print $3}' file.csv
B. awk '{print $3 -F ','}' file.csv
C. awk '{print $3, -F ","}' file.csv
D. awk -F ';' '{print $3}' file.csv

Solution

  1. Step 1: Identify field separator option

    The -F option sets the field separator. For comma-separated files, use -F ','.
  2. Step 2: Check print syntax

    The correct print syntax is '{print $3}' to print the third field.
  3. Final Answer:

    awk -F ',' '{print $3}' file.csv -> Option A
  4. Quick Check:

    Use -F ',' before script block [OK]
Hint: Use -F 'separator' before the awk script block [OK]
Common Mistakes:
  • Placing -F inside the print statement
  • Using wrong separator like semicolon for CSV
  • Misplacing quotes around separator
3. Given a file data.txt with the following content:
apple 10 red
banana 5 yellow
cherry 20 red

What is the output of awk '{print $1, $3}' data.txt?
medium
A. apple 10 banana 5 cherry 20
B. apple red banana yellow cherry red
C. 10 red 5 yellow 20 red
D. apple banana cherry

Solution

  1. Step 1: Identify fields in each line

    Each line has three fields: $1=fruit, $2=number, $3=color.
  2. Step 2: Print first and third fields

    The command prints $1 and $3 separated by space, so output lines are fruit and color pairs.
  3. Final Answer:

    apple red banana yellow cherry red -> Option B
  4. Quick Check:

    Print $1 and $3 fields [OK]
Hint: Match $1, $2, $3 to columns in data [OK]
Common Mistakes:
  • Printing wrong fields like $2 instead of $3
  • Confusing field order
  • Expecting numbers instead of colors
4. What is wrong with this awk command to print the first field from a colon-separated file?
awk '{print $1}' -F ':' file.txt
medium
A. The colon separator is invalid in awk
B. The $1 should be $0 to print the whole line
C. The -F option should come before the script block
D. The file name should come before the script block

Solution

  1. Step 1: Check placement of -F option

    The -F option must come before the script block in awk commands.
  2. Step 2: Analyze the command structure

    Correct syntax is: awk -F ':' '{print $1}' file.txt
  3. Final Answer:

    The -F option should come before the script block -> Option C
  4. Quick Check:

    -F before script block [OK]
Hint: Put -F before the '{print ...}' block [OK]
Common Mistakes:
  • Placing -F after the script block
  • Using wrong field variable
  • Misordering file name and script
5. You have a file records.txt with lines like:
John|Doe|30|Engineer
Jane|Smith|25|Designer
Bob|Brown|40|Manager

Write an awk command to print only the names (first and last) of people older than 28.
hard
A. awk -F '|' '$3 < 28 {print $1, $2}' records.txt
B. awk -F ',' '$3 > 28 {print $1, $2}' records.txt
C. awk '{if ($3 > 28) print $1, $2}' records.txt
D. awk -F '|' '$3 > 28 {print $1, $2}' records.txt

Solution

  1. Step 1: Set correct field separator

    The file uses '|' as separator, so use -F '|' to split fields correctly.
  2. Step 2: Filter by age and print names

    Use condition $3 > 28 to select lines where age is greater than 28, then print first and second fields (first and last names).
  3. Final Answer:

    awk -F '|' '$3 > 28 {print $1, $2}' records.txt -> Option D
  4. Quick Check:

    Filter $3 > 28 and print $1, $2 [OK]
Hint: Use -F '|' and condition $3 > 28 to filter [OK]
Common Mistakes:
  • Using wrong field separator
  • Using wrong comparison operator
  • Not filtering before printing
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