fizzbuzz is a classic programming interview task. this script demonstrates how the problem can be solved in a few characters of awk
The typical tasks is formulated like the following.
Implement a function that,
- when givien a number that is divisible by 3, prints fizz
- when givien a number that is divisible by 5, prints buzz
- when givien a number that is divisible both, prints fizzbuzz
- otherwise print the number
Single number:
$> echo "15" | ./fizzbuzz.awk fizzbuzzMultiple:
$> for i in $(seq 10 16); do echo $i | ./fizzbuzz.awk; done buzz 11 fizz 13 14 fizzbuzz 16In order to understand what happens in fizzbuzz.awk, let's add some spaces and break it up into multiple lines:
# if the number is divisible by 3, set s to 'fizz' $0 % 3 == 0 { s="fizz" } # if the number is divisible by 5, append 'buzz' to s # note that if the number is not divisible by 3, we are appending to an uninitialized s, but that works just fine $0 % 5 == 0 { s=s"buzz" } # if s is set, print s s { print s } # if s is not set, print the number !s { print $0 }