diff --git a/05.awk b/05.awk index c25caa2..60d7c95 100644 --- a/05.awk +++ b/05.awk @@ -1,5 +1,2 @@ -# Use variable to count each occurrence of mechanical engineer - -BEGIN { count = 0 } -$6 == "MechanicalEngineer" { count += 1 } -END { print count } +$6 == "MechanicalEngineer" { count++ } +END { print count } diff --git a/08.awk b/08.awk index 59faed1..cff160c 100644 --- a/08.awk +++ b/08.awk @@ -1,4 +1,5 @@ -/^FirstName/ { - for (i=1; i<8; i++) - printf "%d - %s\n", i, $i +NR==1 { + for (i=1; i highest) { - highest = $4 - name = sprintf("%s %s", $1, $2) - } +NR>1 && ($4 > highest) { + highest = $4 + name = sprintf("%s %s", $1, $2) } END { - printf "%s worked the most hours at %d\n", name, highest + print name, "worked the most hours at ", highest } diff --git a/13.awk b/13.awk index f28de3c..9deca09 100755 --- a/13.awk +++ b/13.awk @@ -1,10 +1,3 @@ #!/usr/bin/awk -f -{ - for (i = 3; i <= NF; i++) { - #printf FS$i - printf "%s\t", $i - } - print NL -} - +{$1="";$2="";print(substr($0,3))} diff --git a/14.awk b/14.awk index fd88561..a9e9ce1 100755 --- a/14.awk +++ b/14.awk @@ -1,11 +1,4 @@ #!/usr/bin/awk -f -{ - printf "%s:\t", NR - for (i = 3; i <= NF; i++) { - #printf FS$i - printf "%s\t", $i - } - print NL # New line -} +{$1="";$2="";print(NR,substr($0,3))} diff --git a/15-awk.sh b/15-awk.sh deleted file mode 100755 index 3f711ab..0000000 --- a/15-awk.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -# How many different office locations does the company have? - -awk '$1 !~ /FirstName/ { print $5 }' payroll.tsv \ - | sort \ - | uniq \ - | awk 'END { print NR }' - diff --git a/15.awk b/15.awk new file mode 100755 index 0000000..955ff56 --- /dev/null +++ b/15.awk @@ -0,0 +1,5 @@ +#!/usr/bin/awk -f + +NR>1 {A[$5]+=1} +END {print length(A)} + diff --git a/16.awk b/16.awk index 6855ba4..9765c58 100644 --- a/16.awk +++ b/16.awk @@ -1,17 +1,4 @@ -function getName(first, last) { - return sprintf("%s %s", $1, $2) -} +#!/usr/bin/awk -f -BEGIN { - sum = 0 - count = 0 -} - -$0 !~ /HourlyWage/ { - sum += $3 - count += 1 -} - -END { - printf("The average wage is %.2f per hour\n", sum / count) -} +NR>1 {S+=$3} +END {print S/(NR-1)} diff --git a/16b-awk.sh b/16b-awk.sh new file mode 100644 index 0000000..5134dd1 --- /dev/null +++ b/16b-awk.sh @@ -0,0 +1,3 @@ +#!/bin/sh -eu + +awk 'NR>1{print $3}END{print int(NR/2) > "/tmp/foo" }' payroll.tsv | sort -n | head -n $(cat /tmp/foo) | tail -n 1 diff --git a/17.awk b/17.awk index e261155..97ec7b1 100644 --- a/17.awk +++ b/17.awk @@ -1,20 +1,4 @@ -function getName(first, last) { - #return sprintf("%s%s", first, last) - return first last -} +#!/usr/bin/awk -f -BEGIN { - count = 0 - marker = 9999 -} - -$1 !~ /FirstName/ { - if (names[getName($1, $2)] == marker) { - count += 1 - } - names[getName($1, $2)] = marker -} - -END { - printf("There are %d people out of %d with identical first and last names\n", count, NR) -} +++A[$1$2]==2 {T++} +END {print T} diff --git a/18.awk b/18.awk index c78f84b..1fdc325 100644 --- a/18.awk +++ b/18.awk @@ -1,33 +1,5 @@ -function getName(first, last) { - return sprintf("%s %s", $1, $2) -} +#!/usr/bin/awk -f -BEGIN { - lowestYear = 9999 - lowestMonth = 99 - lowestDay = 99 - name = "" -} - -$0 !~ /HourlyWage/ { - split($7, date, "/") - if (date[1] < lowestYear) { - lowestYear = date[1] - lowestMonth = date[2] - lowestDay = date[3] - name = getName($1, $2) - } - if (date[1] == lowestYear && date[2] < lowestMonth) { - lowestMonth = date[2] - lowestDay = date[3] - name = getName($1, $2) - } - if (date[1] == lowestYear && date[2] == lowestMonth && date[3] < lowestDay) { - lowestDay = date[3] - name = getName($1, $2) - } -} - -END { - printf "%s was the first employee hired on %d/%d/%d\n", name, lowestYear, lowestMonth, lowestDay -} +BEGIN {d="9999/99/99"} +NR>1&&$NF