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 ' $*