countries USSR 8649 275 Asia countries Canada 3852 25 North America countries China 3705 1032 Asia countries USA 3615 237 North America countries Brazil 3286 134 South America countries India 1267 746 Asia countries Mexico 762 78 North America countries France 211 55 Europe countries Japan 144 120 Asia countries Germany 96 61 Europe countries England 94 56 Europe p11.awk # print countries with column headers and totals p11.awk p11.awk BEGIN { FS = "\t" # make tab the field separator p11.awk printf("%10s %6s %5s %s\n\n", p11.awk "COUNTRY", "AREA", "POP", "CONTINENT") p11.awk } p11.awk { printf("%10s %6d %5d %s\n", $1, $2, $3, $4) p11.awk area = area + $2 p11.awk pop = pop + $3 p11.awk } p11.awk END { printf("\n%10s %6d %5d\n", "TOTAL", area, pop) } p12.awk $0 >= "M" p13.awk $1 < $4 p13a.awk /Asia/ re1.awk /^[0-9]+$/ re2.awk /^[0-9][0-9][0-9]$/ re3.awk /^(\+|-)?[0-9]+\.?[0-9]*$/ re4.awk /^[+-]?[0-9]+[.]?[0-9]*$/ re5.awk /^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+)([eE][+-]?[0-9]+)?$/ re6.awk /^[A-Za-z][A-Za-z0-9]*$/ re7.awk /^[A-Za-z]$|^[A-Za-z][0-9]$/ re8.awk /^[A-Za-z][0-9]?$/ p16.awk $2 !~ /^[0-9]+$/ p18.awk $4 == "Asia" && $3 > 500 p19.awk $4 == "Asia" || $4 == "Europe" p20.awk $4 ~ /^(Asia|Europe)$/ p20a.awk /Asia/ || /Europe/ p20b.awk /Asia|Europe/ p21.awk /Europe/, /Africa/ p22.awk FNR == 1, FNR == 5 { print FILENAME ": " $0 } p22a.awk FNR <= 5 { print FILENAME ": " $0 } p23.awk $4 == "Asia" { print $1, 1000 * $2 } p41.awk { $2 = $2 / 1000; print } p42.awk BEGIN { FS = OFS = "\t" } p42.awk $4 == "North America" { $4 = "NA" } p42.awk $4 == "South America" { $4 = "SA" } p42.awk { print } p43.awk BEGIN { FS = OFS = "\t" } p43.awk { $5 = 1000 * $3 / $2; print } p43a.awk { print ($1 != 0 ? 1/$1 : "$1 is zero, line " NR) } p32.awk $4 == "Asia" { pop = pop + $3; n = n + 1 } p32.awk END { print "Total population of the", n, p32.awk "Asian countries is", pop, "million." p32.awk } p34.awk $3 > maxpop { maxpop = $3; country = $1 } p34.awk END { print "country with largest population:", p34.awk country, maxpop p34.awk } p24.awk { $2 /= 1000; print } p35.awk { print NR ":" $0 } p17.awk BEGIN { digits = "^[0-9]+$" } p17.awk $2 ~ digits builtup.awk BEGIN { builtup.awk sign = "[+-]?" builtup.awk decimal = "[0-9]+[.]?[0-9]*" builtup.awk fraction = "[.][0-9]+" builtup.awk exponent = "([eE]" sign "[0-9]+)?" builtup.awk number = "^" sign "(" decimal "|" fraction ")" exponent "$" builtup.awk } builtup.awk $0 ~ number p36.awk { gsub(/USA/, "United States"); print } p39.awk { $1 = substr($1, 1, 3); print $0 } p40.awk { s = s substr($1, 1, 3) " " } p40.awk END { print s } p40a.awk BEGIN { print "1E2"+0, "12E"+0, "E12"+0, "1X2Y3"+0 } p40b.awk BEGIN { print 1E2 "", 12E-2 "", E12 "", 1.23456789 "" } p45.awk { i = 1 p45.awk while (i <= NF) { p45.awk print $i p45.awk i++ p45.awk } p45.awk } p46.awk { for (i = 1; i <= NF; i++) p46.awk print $i p46.awk } empty.awk BEGIN { FS = "\t" } empty.awk { for (i = 1; i <= NF && $i != ""; i++) empty.awk ; empty.awk if (i <= NF) empty.awk print empty.awk } revline.awk { x[NR] = $0 } revline.awk END { for (i = NR; i > 0; i--) print x[i] } p47.awk /Asia/ { pop["Asia"] += $3 } p47.awk /Europe/ { pop["Europe"] += $3 } p47.awk END { print "Asian population is", p47.awk pop["Asia"], "million." p47.awk print "European population is", p47.awk pop["Europe"], "million." p47.awk } p48.awk BEGIN { FS = "\t" } p48.awk { pop[$4] += $3 } p48.awk END { for (name in pop) p48.awk print name, pop[name] p48.awk } p51.awk function max(m, n) { p51.awk return m > n ? m : n p51.awk } p51a.awk { print max($1,max($2,$3)) } # print maximum of $1, $2, $3 p51a.awk p51a.awk function max(m, n) { p51a.awk return m > n ? m : n p51a.awk } p52.awk BEGIN { OFS = ":"; ORS = "\n\n" } p52.awk { print $1, $2 } p53.awk $3 > 100 { print $1, $3 >"bigpop" } p53.awk $3 <= 100 { print $1, $3 >"smallpop" } p53a.awk { print($1, $3) > ($3 > 100 ? "bigpop" : "smallpop") } p53b.awk { print > $1 } p54.awk # print continents and populations, sorted by population p54.awk p54.awk BEGIN { FS = "\t" } p54.awk { pop[$4] += $3 } p54.awk END { for (c in pop) p54.awk printf("%15s\t%6d\n", c, pop[c]) | "sort -t'\t' +1rn" p54.awk } p60.awk # include - replace #include "f" by contents of file f p60.awk p60.awk /^#include/ { p60.awk gsub(/"/, "", $2) p60.awk while (getline x <$2 > 0) p60.awk print x p60.awk next p60.awk } p60.awk { print } p61.awk # echo - print command-line arguments p61.awk p61.awk BEGIN { p61.awk for (i = 1; i < ARGC; i++) p61.awk printf "%s ", ARGV[i] p61.awk printf "\n" p61.awk } p44.awk # seq - print sequences of integers p44.awk # input: arguments q, p q, or p q r; q >= p; r > 0 p44.awk # output: integers 1 to q, p to q, or p to q in steps of r p44.awk p44.awk BEGIN { p44.awk if (ARGC == 2) p44.awk for (i = 1; i <= ARGV[1]; i++) p44.awk print i p44.awk else if (ARGC == 3) p44.awk for (i = ARGV[1]; i <= ARGV[2]; i++) p44.awk print i p44.awk else if (ARGC == 4) p44.awk for (i = ARGV[1]; i <= ARGV[2]; i += ARGV[3]) p44.awk print i p44.awk } p62.awk $1 == "#include" { gsub(/"/, "", $2); system("cat " $2); next } p62.awk { print } field.awk # field - print named fields of each input line field.awk # usage: field n n n ... file file file ... field.awk field.awk awk ' field.awk BEGIN { field.awk for (i = 1; ARGV[i] ~ /^[0-9]+$/; i++) { # collect numbers field.awk fld[++nf] = ARGV[i] field.awk ARGV[i] = "" field.awk } field.awk if (i >= ARGC) # no file names so force stdin field.awk ARGV[ARGC++] = "-" field.awk } field.awk { for (i = 1; i <= nf; i++) field.awk printf("%s%s", $fld[i], i < nf ? " " : "\n") field.awk } field.awk ' $*