Bird
Raised Fist0
Bash Scriptingscripting~10 mins

awk field extraction in scripts in Bash Scripting - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - awk field extraction in scripts
Start script
↓
Read input line
↓
Split line into fields
↓
Extract desired field(s)
↓
Print extracted field(s)
↓
Repeat for next line or end
↓
End script
The script reads each line, splits it into parts (fields), picks the needed part, prints it, and repeats until done.
Execution Sample
Bash Scripting
echo "apple banana cherry" | awk '{print $2}'
This command extracts and prints the second word from the input line.
Execution Table
StepInput LineFields SplitField ExtractedOutput
1apple banana cherry[apple, banana, cherry]bananabanana
2END---
💡 No more input lines, script ends.
Variable Tracker
VariableStartAfter Step 1Final
Input Linenoneapple banana cherrynone
Fieldsnone[apple, banana, cherry]none
Extracted Fieldnonebanananone
Outputnonebanananone
Key Moments - 2 Insights
Why does awk use $2 to get the second word?
In awk, $1 is the first word, $2 the second, and so on. The $ sign tells awk to pick a field by its position, as shown in the execution_table step 1.
What happens if the input line has fewer fields than requested?
If the requested field doesn't exist, awk prints nothing for that line. This is because fields are split by spaces and missing fields are empty.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output at step 1?
Aapple
Bbanana
Ccherry
Dapple banana
💡 Hint
Check the 'Output' column in execution_table row for step 1.
At which step does awk split the input line into fields?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the 'Fields Split' column in execution_table.
If we change '{print $3}' in the code, what will the output be at step 1?
Aapple
Bbanana
Ccherry
DNo output
💡 Hint
Refer to the 'Fields Split' column and pick the third field.
Concept Snapshot
awk splits each input line into fields by spaces.
Use $1, $2, $3... to extract fields.
{print $n} prints the nth field.
If field missing, prints empty.
Common in scripts to pick columns easily.
Full Transcript
This visual trace shows how awk extracts fields from input lines in scripts. The script reads a line, splits it into words (fields), then prints the chosen field using $ followed by the field number. For example, $2 prints the second word. The execution table shows the input line, how it splits into fields, which field is extracted, and the output printed. Variables like Input Line, Fields, and Extracted Field change as the script runs. Key moments clarify why $2 means second word and what happens if the field is missing. The quiz tests understanding by asking about output and steps. This helps beginners see awk field extraction step-by-step.

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