!<arch> t.0 685727374 9 1 100664 23 ` {i = i+1; print i, NR} t.1.x 685727374 9 1 100664 32 ` {i="count" $1 $2; print i , $0} t.2.x 685727374 9 1 100664 31 ` {i=2; j=$3; $1=i;print i,j,$1} t.3 685727374 9 1 100664 23 ` $1 == "5" || $1 == "4" t.3.x 685727374 9 1 100664 50 ` { x = $1 while (x > 1) { print x x = x / 10 } } t.4 685727374 9 1 100664 21 ` $1 ~ /5/ || $1 ~ /4/ t.4.x 685727374 9 1 100664 18 ` {i=$(1); print i} t.5.x 685727374 9 1 100664 28 ` {$(1) = "xxx"; print $1,$0} t.6 685727374 9 1 100664 76 ` /a|b|c/ { i = $1 print while (i >= 1) { print " ", i i = i / 10 } } t.6.x 685727374 9 1 100664 14 ` {print NF,$0} t.6a 685727374 9 1 100664 64 ` /a|b|c/ { print for (i = $1; i >= 1; ) print " ", i /= 10 } t.6b 685727374 9 1 100664 65 ` /a|b|c/ { print for (i = $1; (i /= 10)>= 1; ) print " ", i } t.8.x 685727374 9 1 100664 109 ` {$2=$1; print} # this should produce a blank for an empty input line # since it has created fields 1 and 2. t.a 685727374 9 1 100664 131 ` {if (amount[$2] "" == "") item[++num] = $2; amount[$2] += $1 } END {for (i=1; i<=num; i++) print item[i], amount[item[i]] } t.aeiou 685727374 9 1 100664 58 ` /^[^aeiouy]*[aeiou][^aeiouy][aeiouy][aeiouy]*[^aeiouy]*$/ t.aeiouy 685727374 9 1 100664 81 ` /^[^aeiouy]*a[^aeiouy]*e[^aeiouy]*i[^aeiouy]*o[^aeiouy]*u[^aeiouy]*y[^aeiouy]*$/ t.arith 685727374 9 1 100664 180 ` { print $1, $1+$1, $1-$1, $1 * $1 } { print $1/NR, $1 % NR } # { print $1++, $1--, --$1, $1-- } # this depends on order of eval of args! # { print -$1 } $1 > 0 { print $1 ^ 0.5 } t.array 685727374 9 1 100664 147 ` { x[NR] = $0 } END { i = 1 while (i <= NR) { print x[i] split (x[i], y) usage = y[1] name = y[2] print " ", name, usage i++ } } t.array1 685727374 9 1 100664 123 ` {for(i=1; i<=NF; i++) { if (x[$i] == "") y[++n] = $i x[$i]++ } } END { for (i=0; i<n; i++) print (y[i], x[y[i]]) } t.array2 685727374 9 1 100664 168 ` $2 ~ /^[a-l]/ { x["a"] = x["a"] + 1 } $2 ~ /^[m-z]/ { x["m"] = x["m"] + 1 } $2 !~ /^[a-z]/ { x["other"] = x["other"] + 1 } END { print NR, x["a"], x["m"], x["other"] } t.avg 685727374 9 1 100664 80 ` {s = s + $1; c = c + 1} END { print "sum=", s, " count=", c print "avg=", s/c } t.b.x 685727374 9 1 100664 36 ` {$6=":::" ; print $6; print NF, $0} t.be 685727374 9 1 100664 190 ` # some question of what FILENAME ought to be before execution. # current belief: "-", or name of first file argument. # this may not be sensible. BEGIN { print FILENAME } END { print NR } t.break 685727374 9 1 100664 91 ` { for (i=1; i <= NF; i++) if ($i ~ /^[a-z]+$/) { print $i " is alphabetic" break } } t.break1 685727374 9 1 100664 135 ` { x[NR] = $0 } END { for (i = 1; i <= NR; i++) { print i, x[i] if (x[i] ~ /shen/) break } print "got here" print i, x[i] } t.break2 685727374 9 1 100664 133 ` { x[NR] = $0 } END { for (i=1; i <= NR; i++) { print i, x[i] if (x[i] ~ /shen/) break } print "got here" print i, x[i] } t.break3 685727374 9 1 100664 132 ` { for (i = 1; i <= NF; i++) { for (j = 1; j <= NF; j++) if (j == 2) break; print "inner", i, j } print "outer", i, j } t.bug1 685727374 9 1 100664 103 ` # this program fails if awk is created without separate I&D # prints garbage if no $3 { print $1, $3 } t.cat 685727374 9 1 100664 114 ` {print $2 " " $1} {print $1 " " "is", $2} {print $2 FS "is" FS $1} {print length($1 $2), length($1) + length($2)} t.cat1 685727374 9 1 100664 38 ` {print x $0} # should precede by zero t.cat2 685727374 9 1 100664 21 ` {$1 = $1 "*"; print} t.cmp 685727374 9 1 100664 8 ` $2 > $1 t.coerce 685727374 9 1 100664 47 ` END { print i, NR if (i < NR) print i, NR } t.comment 685727375 9 1 100664 112 ` # this is a comment line # so is this /#/ { print "this one has a # in it: " $0 # comment print "again:" $0 } t.comment1 685727375 9 1 100664 88 ` #comment # BEGIN { x = 1 } /abc/ { print $0 } #comment END { print NR } #comment t.contin 685727375 9 1 100664 130 ` { for (i = 1; i <= NF; i++) { if ($i ~ /^[0-9]+$/) continue; print $i, " is non-numeric" next } print $0, "is all numeric" } t.count 685727375 9 1 100664 17 ` END { print NR } t.cum 685727375 9 1 100664 38 ` {i = i + $1; print i} END { print i } t.d.x 685727375 9 1 100664 43 ` BEGIN {FS=":" ; OFS=":"} {print NF " ",$0} t.e 685727375 9 1 100664 23 ` $1 < 10 || $2 ~ /bwk/ t.else 685727375 9 1 100664 46 ` { if($1>1000) print "yes" else print "no" } t.exit 685727375 9 1 100664 32 ` { print } $1 < 5000 { exit NR } t.f 685727375 9 1 100664 15 ` {print $2, $1} t.f.x 685727375 9 1 100664 26 ` $1>0 {print $1, sqrt($1)} t.f0 685727375 9 1 100664 20 ` $1 ~ /x/ {print $0} t.f1 685727375 9 1 100664 16 ` {$1 = 1; print} t.f2 685727375 9 1 100664 19 ` {$1 = 1; print $0} t.f3 685727375 9 1 100664 17 ` {$1 = NR; print} t.f4 685727375 9 1 100664 20 ` {$1 = NR; print $0} t.for 685727375 9 1 100664 39 ` { for (i=1; i<=NF; i++) print i, $i } t.for1 685727375 9 1 100664 68 ` { i = 1 for (;;) { if (i > NF) next print i, $i i++ } } t.for2 685727375 9 1 100664 61 ` { for (i=1;;i++) { if (i > NF) next print i, $i } } t.format4 685727375 9 1 100664 127 ` BEGIN { text=sprintf ("%125s", "x") print length (text) print text xxx=substr (text,1,105) print length (xxx) print xxx exit } t.getline 685727375 9 1 100664 117 ` { x = $1 for (i = 1; i <= 3; i++) if (getline) x = x " " $1 print x x = "" } END { if (x != "") print x } t.i.x 685727375 9 1 100664 52 ` $1 > 0 {i=i+log($1); print i,log($1)} END {print i} t.if 685727375 9 1 100664 21 ` {if($1 || $2) print} t.in 685727375 9 1 100664 122 ` BEGIN { x["apple"] = 1; x["orange"] = 2; x["lemon"] = 3; for (i in x) print i, x[i] | "sort" close("sort") exit } t.in1 685727375 9 1 100664 135 ` { if (amount[$2] == "") name[++n] = $2 amount[$2] += $1 } END { for (i in name) print i, name[i], amount[name[i]] | "sort" } t.in2 685727375 9 1 100664 68 ` { x[substr($2, 1, 1)] += $1 } END { for (i in x) print i, x[i] } t.in3 685727375 9 1 100664 83 ` { x[NR] = $0 } END { for (i in x) if (x[i] ~ /shen/) break print i, x[i] } t.incr 685727375 9 1 100664 52 ` { ++i; --j; k++; l-- } END { print NR, i, j, k, l } t.incr2 685727375 9 1 100664 93 ` { s = 0 for (i=1; i <= NF; ) if ($(i) ~ /^[0-9]+$/) s += $(i++) else i++ print s } t.incr3 685727375 9 1 100664 58 ` { s = 0 for (i=1; i <= NF; s += $(i++)) ; print s } t.index 685727375 9 1 100664 144 ` { n = length d = 0 for (i = 1; i <= n; i++) if ((k = index($0, substr($0, i))) != i) d = 1 if (d) print $0, "has duplicate letters" } t.j.x 685727375 9 1 100664 55 ` {i=i+sqrt($1); print i,sqrt($1)} END {print sqrt(i),i} t.longstr 685727375 9 1 100664 137 ` BEGIN{ x = "111111111122222222233333333334444444444555555555566666666667777777777888888888899999999990000000000" printf "%s\n", x exit } t.makef 685727375 9 1 100664 30 ` {$3 = 2*$1; print $1, $2, $3} t.match 685727375 9 1 100664 15 ` $2 ~ /ava|bwk/ t.max 685727375 9 1 100664 58 ` length > max { max = length; x = $0} END { print max, x } t.mod 685727375 9 1 100664 12 ` NR % 2 == 1 t.monotone 685727375 9 1 100664 112 ` /^a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?$|^z?y?x?w?v?u?t?s?r?q?p?o?n?m?l?k?j?i?h?g?f?e?d?c?b?a?$/ t.nameval 685727375 9 1 100664 132 ` { if (amount[$2] == "") name[++n] = $2 amount[$2] += $1 } END { for (i = 1; i <= n; i++) print name[i], amount[name[i]] } t.next 685727375 9 1 100664 29 ` $1 > 5000 { next } { print } t.not 685727375 9 1 100664 55 ` $2 !~ /ava|bwk/ !($1 < 2000) !($2 ~ /bwk/) !$2 ~ /bwk/ t.null0 685727375 9 1 100664 397 ` BEGIN { FS = ":" } { if (a) print "a", a if (b == 0) print "b", b if ( c == "0") print "c", c if (d == "") print "d", d if (e == 1-1) print "e", e } $1 == 0 {print "$1 = 0"} $1 == "0" {print "$1 = quoted 0"} $1 == "" {print "$1 = null string"} $5 == 0 {print "$5 = 0"} $5 == "0" {print "$5 = quoted 0"} $5 == "" {print "$5 = null string"} $1 == $3 {print "$1 = $3"} $5 == $6 {print "$5 = $6"} t.ofmt 685727375 9 1 100664 34 ` BEGIN {OFMT="%.5g"} {print $1+0} t.ofs 685727375 9 1 100664 60 ` BEGIN { OFS = " %% "; ORS = "##" } { print $1, $2; print } t.pipe 685727375 9 1 100664 49 ` BEGIN {print "read /usr/bwk/awk/t.pipe" | "cat"} t.pp 685727375 9 1 100664 8 ` /a/,/b/ t.pp1 685727375 9 1 100664 87 ` /bwk/,/bwk/ { print $2, $1 } /ava/,/ava/ { print $2, $1 } /pjw/,/pjw/ { print $2, $1 } t.pp2 685727375 9 1 100664 99 ` /bwk/,/scj/ { print "1: ", $0 } /bwk/, /bsb/ { print "2: ", $0 } /mel/, /doug/ { print "3: ", $0 } t.printf 685727375 9 1 100664 84 ` { printf "%%: %s ... %s \t", $2, $1 x = sprintf("%8d %10.10s", $1, $2) print x } t.quote 685727375 9 1 100664 21 ` {print "\"" $1 "\""} t.re1 685727376 9 1 100664 98 ` /[a-cg-j1-3]/ { print $0 " matches /[a-cg-j1-3]/" } /[^aeiou]/ { print $0 " matches /[^aeiou]/" } t.rec 685727376 9 1 100664 19 ` { print sqrt($1) } t.redir 685727376 9 1 100664 55 ` $1%2==1 {print >"foo.odd"} $1%2==0 {print >"foo.even"} t.roff 685727376 9 1 100664 251 ` NF > 0 { for (i = 1; i <= NF; i++) { n = length($i) if (n + olen >= 60) { print oline olen = n oline = $i } else { oline = oline " " $i olen += n } } } NF == 0 { print oline olen = 0 } END { if (olen > 0) print oline } t.sep 685727376 9 1 100664 90 ` BEGIN { FS = "1"; print "field separator is", FS } NF>1 { print $0 " has " NF " fields" } t.seqno 685727376 9 1 100664 15 ` {print NR, $0} t.split 685727376 9 1 100664 64 ` BEGIN { z = "stuff" } { split ($0, x); print x[3], x[2], x[1] } t.split2 685727376 9 1 100664 36 ` { split ($0, x); print x[2], x[1] } t.split9 685727376 9 1 100664 145 ` { n = split ($0, x, FS) if (n != NF) print "botch at ", NR, n, NF for (i=1; i<=n; i++) if ($i != x[i]) print "diff at ", i, x[i], $i } t.split9a 685727376 9 1 100664 164 ` BEGIN { FS = "a" } { n = split ($0, x, FS) if (n != NF) print "botch at ", NR, n, NF for (i=1; i<=n; i++) if ($i != x[i]) print "diff at ", i, x[i], $i } t.stately 685727376 9 1 100664 159 ` /^(al|ak|az|ar|ca|co|ct|de|fl|ga|hi|io|il|in|ia|ks|ky|la|me|md|ma|mi|mn|ms|mo|mt|nb|nv|nh|nj|nm|ny|nc|nd|oh|ok|or|pa|ri|sc|sd|tn|tx|ut|vt|va|wa|wv|wi|-|wy)*$/ t.strcmp 685727376 9 1 100664 42 ` $2 >= "ava" && $2 <= "bwk" || $2 >= "pjw" t.strcmp1 685727376 9 1 100664 52 ` $1 != 1 && $1 != 2 && $1 != 3 && $1 != 4 && $1 != 5 t.substr 685727376 9 1 100664 90 ` substr($2, 1, 1) ~ /[abc]/ substr($2, length($2)) !~ /[a-z]/ substr($2, length($2)) ~ /./ t.time 685727376 9 1 100664 184 ` BEGIN { FS = "-" } /sh$/ { n++ l = length($NF) s += l ck %= l totck += ck print } END { if (n > 0) { printf "%d %d %d %fn\n", totck, n, s, s/n } else print "n is zero" } t.vf 685727376 9 1 100664 44 ` BEGIN { i = 1 } {print $(i+i)} {print $(1)} t.vf1 685727376 9 1 100664 66 ` { print i = 1 while (i <= NF) { print " " $i i = i + 1 } } t.vf3 685727376 9 1 100664 36 ` BEGIN { i=1; j=2 } {$i = $j; print} t.x 685727376 9 1 100664 4 ` /x/ t.reg 685727376 9 1 100664 37 ` /[^\[\]]/ !/^\[/ !/^[\[\]]/ /[\[\]]/ tt.01 685727376 9 1 100664 10 ` { print } tt.02 685727376 9 1 100664 21 ` { print NR, NF, $0 } tt.02a 685727376 9 1 100664 27 ` { $2 = length($2); print } tt.03 685727376 9 1 100664 36 ` { s += length($2) } END { print s } tt.03a 685727376 9 1 100664 28 ` { s += $3 } END { print s } tt.04 685727376 9 1 100664 47 ` { for (i = NF; i > 0; i--) printf "%s ", $i } tt.05 685727376 9 1 100664 62 ` { s = "" for (i = NF; i > 0; i--) s = s " " $i print s } tt.06 685727376 9 1 100664 68 ` { x[$1] += length } END { for (i in x) print i, x[i] | "sort" } tt.07 685727376 9 1 100664 12 ` NF % 2 == 0 tt.08 685727376 9 1 100664 16 ` length % 2 == 0 tt.09 685727376 9 1 100664 7 ` ! /^./ tt.10 685727376 9 1 100664 5 ` /.$/ tt.11 685727376 9 1 100664 28 ` { print substr($0, 10,10) } tt.12 685727376 9 1 100664 37 ` { $3 = "xxx" $3 "xxx"; $4--; print } p.1 685727376 9 1 100664 10 ` { print } p.10 685727376 9 1 100664 9 ` $1 == $4 p.11 685727376 9 1 100664 7 ` /Asia/ p.12 685727376 9 1 100664 25 ` $4 ~ /Asia/ { print $1 } p.13 685727376 9 1 100664 25 ` $4 !~ /Asia/ {print $1 } p.14 685727376 9 1 100664 5 ` /\$/ p.15 685727376 9 1 100664 5 ` /\\/ p.16 685727376 9 1 100664 6 ` /^.$/ p.17 685727376 9 1 100664 17 ` $2 !~ /^[0-9]+$/ p.18 685727376 9 1 100664 28 ` /(apple|cherry) (pie|tart)/ p.19 685727376 9 1 100664 43 ` BEGIN { digits = "^[0-9]+$" } $2 !~ digits p.2 685727376 9 1 100664 17 ` { print $1, $3 } p.20 685727376 9 1 100664 25 ` $4 == "Asia" && $3 > 500 p.21 685727376 9 1 100664 31 ` $4 == "Asia" || $4 == "Africa" p.22 685727376 9 1 100664 23 ` $4 ~ /^(Asia|Africa)$/ p.23 685727377 9 1 100664 19 ` /Canada/, /Brazil/ p.24 685727377 9 1 100664 42 ` FNR == 1, FNR == 5 { print FILENAME, $0 } p.25 685727377 9 1 100664 46 ` { printf "%10s %6.1f\n", $1, 1000 * $3 / $2 } p.26 685727377 9 1 100664 112 ` /Asia/ { pop = pop + $3; n = n + 1 } END { print "population of", n,\ "Asian countries in millions is", pop } p.26a 685727377 9 1 100664 101 ` /Asia/ { pop += $3; ++n } END { print "population of", n,\ "Asian countries in millions is", pop } p.27 685727377 9 1 100664 73 ` maxpop < $3 { maxpop = $3; country = $1 } END { print country, maxpop } p.28 685727377 9 1 100664 20 ` { print NR ":" $0 } p.29 685727377 9 1 100664 41 ` { gsub(/USA/, "United States"); print } p.3 685727377 9 1 100664 32 ` { printf "%10s %6d\n", $1, $3 } p.30 685727377 9 1 100664 21 ` { print length, $0 } p.31 685727377 9 1 100664 70 ` length($1) > max { max = length($1); name = $1 } END { print name } p.32 685727377 9 1 100664 33 ` { $1 = substr($1, 1, 3); print } p.33 685727377 9 1 100664 48 ` { s = s " " substr($1, 1, 3) } END { print s } p.34 685727377 9 1 100664 22 ` { $2 /= 1000; print } p.35 685727377 9 1 100664 115 ` BEGIN { FS = OFS = "\t" } $4 ~ /^North America$/ { $4 = "NA" } $4 ~ /^South America$/ { $4 = "SA" } { print } p.36 685727377 9 1 100664 78 ` BEGIN { FS = OFS = "\t" } { $5 = 1000 * $3 / $2 ; print $1, $2, $3, $4, $5 } p.37 685727377 9 1 100664 15 ` $1 "" == $2 "" p.38 685727377 9 1 100664 85 ` { if (maxpop < $3) { maxpop = $3 country = $1 } } END { print country, maxpop } p.39 685727377 9 1 100664 49 ` { i = 1 while (i <= NF) { print $i i++ } } p.4 685727377 9 1 100664 17 ` { print NR, $0 } p.40 685727377 9 1 100664 41 ` { for (i = 1; i <= NF; i++) print $i } p.41 685727377 9 1 100664 83 ` NR >= 10 { exit } END { if (NR < 10) print FILENAME " has only " NR " lines" } p.42 685727377 9 1 100664 186 ` /Asia/ { pop["Asia"] += $3 } /Africa/ { pop["Africa"] += $3 } END { print "Asian population in millions is", pop["Asia"] print "African population in millions is", pop["Africa"] } p.43 685727377 9 1 100664 95 ` BEGIN { FS = "\t" } { area[$4] += $2 } END { for (name in area) print name ":" area[name] } p.44 685727377 9 1 100664 100 ` func fact(n) { if (n <= 1) return 1 else return n * fact(n-1) } { print $1 "! is " fact($1) } p.45 685727377 9 1 100664 53 ` BEGIN { OFS = ":" ; ORS = "\n\n" } { print $1, $2 } p.46 685727377 9 1 100664 17 ` { print $1 $2 } p.47 685727377 9 1 100664 63 ` $3 > 100 { print >"tempbig" } $3 <= 100 { print >"tempsmall" } p.48 685727377 9 1 100664 92 ` BEGIN { FS = "\t" } { pop[$4] += $3 } END { for (c in pop) print c ":" pop[c] | "sort" } p.48a 685727377 9 1 100664 81 ` BEGIN { for (i = 1; i < ARGC; i++) printf "%s ", ARGV[i] printf "\n" exit } p.48b 685727377 9 1 100664 85 ` BEGIN { k = 3; n = 10 } { if (n <= 0) exit if (rand() <= k/n) { print; k-- } n-- } p.49 685727377 9 1 100664 38 ` $1 == "include" { system("cat " $2) } p.5 685727377 9 1 100664 141 ` BEGIN { FS = "\t" printf "%10s %6s %5s %15s\n", "COUNTRY", "AREA", "POP", "CONTINENT" } { printf "%10s %6d %5d %15s\n", $1, $2, $3, $4 } p.50 685727377 9 1 100664 117 ` BEGIN { FS = "\t" } { pop[$4 ":" $1] += $3 } END { for (cc in pop) print cc ":" pop[cc] | "sort -t: +0 -1 +2nr" } p.51 685727377 9 1 100664 108 ` BEGIN { FS = ":" } { if ($1 != prev) { print "\n" $1 ":" prev = $1 } printf "\t%-10s %6d\n", $2, $3 } p.52 685727377 9 1 100664 325 ` BEGIN { FS = ":" } { if ($1 != prev) { if (prev) { printf "\t%-10s\t %6d\n", "total", subtotal subtotal = 0 } print "\n" $1 ":" prev = $1 } printf "\t%-10s %6d\n", $2, $3 wtotal += $3 subtotal += $3 } END { printf "\t%-10s\t %6d\n", "total", subtotal printf "\n%-10s\t\t %6d\n", "World Total", wtotal } p.5a 685727377 9 1 100664 147 ` BEGIN { FS = "\t" printf "%10s\t%6s\t%6s\t%15s\n", "COUNTRY", "AREA", "POP'N", "CONTINENT"} { printf "%10s\t%6d\t%6d\t%15s\n", $1, $2, $3, $4} p.6 685727377 9 1 100664 17 ` END { print NR } p.7 685727377 9 1 100664 9 ` $3 > 100 p.8 685727377 9 1 100664 26 ` $4 == "Asia" { print $1 } p.9 685727377 9 1 100664 10 ` $1 >= "S" Compare 685727377 9 1 100775 218 ` for i do echo "$i:" awk -f $i test.data >foo1 ../a.out -f $i test.data >foo2 if cmp -s foo1 foo2 then true else echo -n "$i: BAD ..." fi diff -b foo1 foo2 | sed -e 's/^/ /' -e 10q # bprint -c ../a.out done Compare.1 685727377 9 1 100775 243 ` newawk=../a.out for i do echo "$i:" awk -f $i test.countries >foo1 $newawk -f $i test.countries >foo2 if cmp -s foo1 foo2 then true else echo -n "$i: BAD ..." fi diff -b foo1 foo2 | sed -e 's/^/ /' -e 10q # bprint -c ../a.out done test.data 685727377 9 1 100664 1433 ` /dev/rrp3: 17379 mel 16693 bwk me 16116 ken 15713 srb 11895 lem 10409 scj 10252 rhm 9853 shen 9748 a68 9492 sif 9190 pjw 8912 nls 8895 dmr 8491 cda 8372 bs 8252 llc 7450 mb 7360 ava 7273 jrv 7080 bin 7063 greg 6567 dict 6462 lck 6291 rje 6211 lwf 5671 dave 5373 jhc 5220 agf 5167 doug 5007 valerie 3963 jca 3895 bbs 3796 moh 3481 xchar 3200 tbl 2845 s 2774 tgs 2641 met 2566 jck 2511 port 2479 sue 2127 root 1989 bsb 1989 jeg 1933 eag 1801 pdj 1590 tpc 1385 cvw 1370 rwm 1316 avg 1205 eg 1194 jam 1153 dl 1150 lgm 1031 cmb 1018 jwr 950 gdb 931 marc 898 usg 865 ggr 822 daemon 803 mihalis 700 honey 624 tad 559 acs 541 uucp 523 raf 495 adh 456 kec 414 craig 386 donmac 375 jj 348 ravi 344 drw 327 stars 288 mrg 272 jcb 263 ralph 253 tom 251 sjb 248 haight 224 sharon 222 chuck 213 dsj 201 bill 184 god 176 sys 166 meh 163 jon 144 dan 143 fox 123 dale 116 kab 95 buz 80 asc 79 jas 79 trt 64 wsb 62 dwh 56 ktf 54 lr 47 dlc 45 dls 45 jwf 44 mash 43 ars 43 vgl 37 jfo 32 rab 31 pd 29 jns 25 spm 22 rob 15 egb 10 hm 10 mhb 6 aed 6 cpb 5 evp 4 ber 4 men 4 mitch 3 ast 3 jfr 3 lax 3 nel 2 blue 2 jfk 2 njas 1 122sec 1 ddwar 1 gopi 1 jk 1 learn 1 low 1 nac 1 sidor test.countries 685727377 9 1 100664 249 ` Russia 8650 262 Asia Canada 3852 24 North America China 3692 866 Asia USA 3615 219 North America Brazil 3286 116 South America Australia 2968 14 Australia India 1269 637 Asia Argentina 1072 26 South America Sudan 968 19 Africa Algeria 920 18 Africa t.1 685727377 9 1 100644 35 ` BEGIN {FS=":"} {print $1, $2, $3} t.2 685727377 9 1 100664 38 ` BEGIN {OFS="==="} {print $1, $2, $3} t.ors 685727377 9 1 100644 38 ` BEGIN {ORS="abc"} {print $1, $2, $3} t.re7 685727377 9 1 100644 52 ` /^([0-9]+\.?[0-9]*|\.[0-9]+)((e|E)(\+|-)?[0-9]+)?$/ T.argv 685727378 9 1 100775 1882 ` echo T.argv: misc tests of argc and argv awk=${awk-../a.out} echo >foo1 echo >foo2 $awk ' BEGIN { for (i = 1; i < ARGC-1; i++) printf "%s ", ARGV[i] if (ARGC > 1) printf "%s", ARGV[i] printf "\n" exit }' * >foo1 echo * >foo2 diff foo1 foo2 || echo 'BAD: T.argv (echo1 *)' $awk ' BEGIN { for (i = 1; i < ARGC; i++) { printf "%s", ARGV[i] if (i < ARGC-1) printf " " } printf "\n" exit }' * >foo1 echo * >foo2 diff foo1 foo2 || echo 'BAD: T.argv (echo2 *)' $awk ' BEGIN { print ARGC ARGV[ARGC-1] = "" for (i=0; i < ARGC; i++) print ARGV[i] exit } ' a bc def gh >foo1 echo "5 $awk a bc def " >foo2 diff foo1 foo2 || echo 'BAD: T.argv (argc *)' echo '1 2 3' >foo0 echo 'foo1 foo2 foo3' >foo1 $awk '{print L $0}' L=foo <foo0 >foo2 diff foo1 foo2 || echo 'BAD: T.argv (L=foo <foo1)' echo '1 2 3' >foo0 echo 'foo1 foo2 foo3' >foo1 $awk '{print L $0}' L=foo foo0 >foo2 diff foo1 foo2 || echo 'BAD: T.argv (L=foo foo1)' echo '1 2 3' >foo0 echo 'foo1 foo2 foo3' >foo1 cat foo0 | $awk '{print L $0}' L=foo - >foo2 diff foo1 foo2 || echo 'BAD: T.argv (L=foo -)' echo '1 2 3' >foo0 echo 'foo1 foo2 foo3 glop1 glop2 glop3' >foo1 $awk '{print L $0}' L=foo foo0 L=glop foo0 >foo2 diff foo1 foo2 || echo 'BAD: T.argv (L=foo L=glop)' echo '1 2 3' >foo0 echo '111 112 113 221 222 223' >foo1 $awk '{print L $0}' L=11 foo0 L=22 foo0 >foo2 diff foo1 foo2 || echo 'BAD: T.argv (L=11 L=22)' echo 3.345 >foo1 $awk 'BEGIN { print ARGV[1] + ARGV[2]}' 1 2.345 >foo2 diff foo1 foo2 || echo 'BAD: T.argv (ARGV[1] + ARGV[2])' echo 3.345 >foo1 x1=1 x2=2.345 $awk 'BEGIN { print ENVIRON["x1"] + ENVIRON["x2"]}' 1 2.345 >foo2 diff foo1 foo2 || echo 'BAD: T.argv (ENVIRON[x1] + ENVIRON[x2])' echo 'foo1' >foo1 echo 'foo2' >foo2 echo 'foo3' >foo3 $awk 'BEGIN { ARGV[2] = "" } { print }' foo1 foo2 foo3 >foo4 echo 'foo1 foo3' >foo5 diff foo4 foo5 || echo 'BAD: T.argv zap ARGV[2]' T.close 685727378 9 1 100775 281 ` echo T.close: test close built-in awk=${awk-../a.out} rm -f foo $awk '{ print >>"foo"; close("foo") }' /etc/passwd diff /etc/passwd foo || echo 'BAD: T.close (1)' ls -l >foo tail -1 foo >foo1 $awk '{ print >"foo2"; close("foo2") }' foo diff foo1 foo2 || echo 'BAD: T.close (2)' T.func 685727378 9 1 100775 2842 ` echo T.func: test user-defined functions awk=${awk-../a.out} echo '10 2 2 10 10 10 10 1e1 1e1 9' | $awk ' # tests whether function returns sensible type bits function assert(cond) { # assertion if (cond) print 1; else print 0 } function i(x) { return x } { m=$1; n=i($2); assert(m>n) } ' >foo1 echo '1 0 0 0 1' >foo2 diff foo1 foo2 || echo 'BAD: T.func (function return type)' echo 'data: data' >foo1 $awk ' func test1(array) { array["test"] = "data" } func test2(array) { return(array["test"]) } BEGIN { test1(foo); print "data: " test2(foo) } ' >foo2 diff foo1 foo2 || echo 'BAD: T.func (array type)' $awk ' BEGIN { code() } END { codeout("x") } function code() { ; } function codeout(ex) { print ex } ' /dev/null >foo1 echo x >foo2 diff foo1 foo2 || echo 'BAD: T.func (argument passing)' $awk ' BEGIN { unireghf() } func unireghf(hfeed) { hfeed[1]=0 rcell("foo",hfeed) hfeed[1]=0 rcell("bar",hfeed) } func rcell(cellname,hfeed) { print cellname } ' >foo1 echo "foo bar" >foo2 diff foo1 foo2 || echo 'BAD: T.func (convert arg to array)' $awk ' func f(n) { if (n <= 1) return 1 else return n * f(n-1) } { print f($1) } ' <<! >foo2 0 1 2 3 4 5 6 7 8 9 ! cat <<! >foo1 1 1 2 6 24 120 720 5040 40320 362880 ! diff foo1 foo2 || echo 'BAD: T.func (factorial)' $awk ' func ack(m,n) { k = k+1 if (m == 0) return n+1 if (n == 0) return ack(m-1, 1) return ack(m-1, ack(m, n-1)) } { k = 0; print ack($1,$2), "(" k " calls)" } ' <<! >foo2 0 0 1 1 2 2 3 3 3 4 3 5 ! cat <<! >foo1 1 (1 calls) 3 (4 calls) 7 (27 calls) 61 (2432 calls) 125 (10307 calls) 253 (42438 calls) ! diff foo1 foo2 || echo 'BAD: T.func (ackermann)' $awk ' END { print "end" } { print fib($1) } func fib(n) { if (n <= 1) return 1 else return add(fib(n-1), fib(n-2)) } func add(m,n) { return m+n } BEGIN { print "begin" } ' <<! >foo2 1 3 5 10 ! cat <<! >foo1 begin 1 3 8 89 end ! diff foo1 foo2 || echo 'BAD: T.func (fib)' $awk ' func foo() { for (i = 1; i <= 2; i++) return 3 print "should not see this" } BEGIN { foo(); exit } ' >foo1 grep 'should not' foo1 && echo 'BAD: T.func (return)' # this exercises multiple free of temp cells echo 'eqn eqn2' >foo1 $awk 'BEGIN { eprocess("eqn", "x", contig) process("tbl" ) eprocess("eqn" "2", "x", contig) } function eprocess(file, first, contig) { print file } function process(file) { close(file) }' >foo2 diff foo1 foo2 || echo 'BAD: T.func (eqn)' echo 1 >foo1 $awk 'function f() { n = 1; exit } BEGIN { n = 0; f(); n = 2 }; END { print n}' >foo2 diff foo1 foo2 || echo 'BAD: T.func (exit in function)' echo 1 >foo1 $awk ' BEGIN { n = 10 for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) x[i,j] = n * i + j for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) if ((i,j) in x) k++ print (k == n^2) } ' >foo2 diff foo1 foo2 || echo 'BAD: T.func (multi-dim subscript)' T.getline 685727378 9 1 100775 1637 ` echo T.getline: test getline function awk=${awk-../a.out} who >foo1 cat foo1 | $awk ' BEGIN { while (getline) print exit } ' >foo diff foo1 foo || echo 'BAD: T.getline (bare getline)' who >foo1 cat foo1 | $awk ' BEGIN { while (getline xxx) print xxx exit } ' >foo diff foo1 foo || echo 'BAD: T.getline (getline xxx)' $awk ' BEGIN { while (getline <"/etc/passwd") print exit } ' >foo diff /etc/passwd foo || echo 'BAD: T.getline (getline <file)' cat /etc/passwd | $awk ' BEGIN { while (getline <"-") # stdin print exit } ' >foo diff /etc/passwd foo || echo 'BAD: T.getline (getline <"-")' $awk ' BEGIN { while (getline <ARGV[1]) print exit } ' /etc/passwd >foo diff /etc/passwd foo || echo 'BAD: T.getline (getline <arg)' $awk ' BEGIN { while (getline x <ARGV[1]) print x exit } ' /etc/passwd >foo diff /etc/passwd foo || echo 'BAD: T.getline (getline x <arg)' $awk ' BEGIN { while (("cat " ARGV[1]) | getline) print exit } ' /etc/passwd >foo diff /etc/passwd foo || echo 'BAD: T.getline (cat arg | getline)' $awk ' BEGIN { while (("cat " ARGV[1]) | getline x) print x exit } ' /etc/passwd >foo diff /etc/passwd foo || echo 'BAD: T.getline (cat arg | getline x)' $awk ' BEGIN { print getline <"/glop/glop/glop" } ' >foo echo '-1' >foo1 diff foo foo1 || echo 'BAD: T.getline (non-existent file)' echo 'false false equal' >foo1 $awk 'BEGIN { "echo 0" | getline if ($0) printf "true " else printf "false " if ($1) printf "true " else printf "false " if ($0==$1) printf "equal\n" else printf "not equal\n" }' >foo2 diff foo1 foo2 || echo 1>&2 'BAD: T.getline bad $0 type in cmd|getline' T.misc 685727378 9 1 100775 7885 ` echo T.misc: miscellaneous buglets now watched for awk=${awk-../a.out} rm -f core echo 3 5 | $awk '{ i = 1; print ($i)++ ; print $1, i }' >foo1 echo '3 4 1' >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc bad field increment' # makes sure that fields are recomputed even if self-assignment echo 'a b c s p q r x y' >foo echo 'a s p x' >foo1 $awk '{ NF -= 2; $1 = $1; print }' <foo >foo2 diff foo1 foo2 || echo 1>&2 "BAD: T.misc bad field self-assignment" echo '1 1' >foo1 $awk 'BEGIN {x = 1; print x; x = x; print x}' >foo2 diff foo1 foo2 || echo 1>&2 "BAD: T.misc bad self-assignment" echo 573109312 | $awk '{print $1*4}' >foo1 echo 2292437248 >foo2 diff foo1 foo2 || echo 1>&2 "BAD: T.misc bad overflow" # note that there are 8-bit characters in the echo # some shells will probably screw this up. echo '# code ¤ 1 code ¤ 2' | $awk '/^#/' >foo1 echo '#' >foo2 diff foo1 foo2 || echo 1>&2 "BAD: T.misc bad match of 8-bit char" echo hello | $awk 'BEGIN { FILENAME = "/etc/passwd" } { print $0 }' >/dev/null if test -r core; then echo 1>&2 "BAD: T.misc /etc/passwd dropped core"; fi echo '2 10' | $awk '{ x[NR] = $0 } # test whether $0 is NUM as well as STR END { if (x[1] > x[2]) print "BAD: T.misc: $0 is not NUM" }' $awk 'BEGIN { npad = substr("alexander" " ",1,15) print npad }' >foo grep '\\' foo && echo 1>&2 "BAD: T.misc alexander fails" # This should give an error about function arguments $awk ' function foo(x) { print "x is" x } BEGIN { foo(foo) } ' 2>foo grep "can't use function foo" foo >/dev/null || echo 1>&2 "BAD: T.misc fcn args fails" # This should be a syntax error $awk ' !x = y ' 2>foo grep "syntax error" foo >/dev/null || echo 1>&2 "BAD: T.misc syntax error !x=y fails" # This should print bbb $awk ' BEGIN { up[1] = "a" for (i in up) gsub("a", "A", x) print x x "bbb" exit } ' >foo grep bbb foo >/dev/null || echo 1>&2 "BAD: T.misc gsub failed" echo yes | $awk ' BEGIN { printf "push return" >"/dev/null" getline ans <"/dev/null" } ' if test -r core; then echo 1>&2 "BAD: T.misc getline ans dropped core"; fi $awk 'BEGIN { unireghf() } func unireghf(hfeed) { hfeed[1] = 0 }' if test -r core; then echo 1>&2 "BAD: T.misc unireghf dropped core"; fi echo x | $awk '/[/]/' 2>foo grep 'nonterminated character class' foo >/dev/null || error 'BAD: T.misc nonterminated fails' if test -r core; then echo 1>&2 "BAD: T.misc nonterminated dropped core"; fi $awk ' func f() { return 12345 } BEGIN { printf "<%s>\n", f() } ' >foo grep '<12345>' foo >/dev/null || echo 'BAD: T.misc <12345> fails' echo 'abc def ghi jkl' >foo $awk ' BEGIN { RS = "" while (getline <"foo") print }' >foo1 $awk 'END {print NR}' foo1 | grep 4 >/dev/null || echo 'BAD: T.misc abcdef fails' # The following should not produce a warning about changing a constant # nor about a curdled tempcell list $awk 'func f(x) { x = 2 } BEGIN { f(1) }' >foo grep '^' foo && echo 'BAD: test constant change fails' # The following should not produce a warning about a curdled tempcell list $awk 'func f(x) { x } BEGIN { f(1) }' >foo grep '^' foo && echo 'BAD: test tempcell list fails' $awk 'BEGIN { print 9, a=10, 11; print a; exit }' >foo1 echo '9 10 11 10' >foo2 diff foo1 foo2 || echo 'BAD: T.misc (embedded expression)' echo "abc defgh ijkl" | $awk ' { $1 = ""; line = $0; print line; print $0; $0 = line; print $0 }' >foo1 echo " defgh ijkl defgh ijkl defgh ijkl" >foo2 diff foo1 foo2 || echo 'BAD: T.misc (assignment to $0)' $awk ' func min(a, b) { if (a < b) return a else return b } BEGIN { exit } ' if test -r core; then echo 1>&2 "BAD: T.misc function min dropped core"; fi # The following should not give a syntax error message: $awk ' func expand(chart) { getline chart < "CHAR.ticks" } ' >foo grep '^' foo >/dev/null && echo 'BAD: T.misc expand error' $awk 'BEGIN { print 1e40 }' >/dev/null if test -r core; then echo 1>&2 "BAD: T.misc 1E40 dropped core"; fi # The following syntax error should not dump core: $awk ' $NF==3 {first=1} $NF==2 && first==0 && (abs($1-o1)>120||abs($2-o2)>120) {print $0} $NF==2 {o1=%1; o2=$2; first=0} ' 2>/dev/null if test -r core; then echo 1>&2 "BAD: T.misc first/abs dropped core"; fi # The following syntax error should not dump core: $awk '{ n = split($1, address, !); print address[1] }' 2>foo grep 'illegal statement' foo >/dev/null || echo 'BAD: T.misc split error' if test -r core; then echo 1>&2 "BAD: T.misc split! dropped core"; fi # The following should cause a syntax error message $awk 'BEGIN {"hello"}' 2>foo grep 'illegal statement' foo >/dev/null || echo 'BAD: T.misc hello error' # The following should give a syntax error message: $awk ' function pile(c, r) { r = ++pile[c] } { pile($1) } ' 2>foo grep 'context is' foo >/dev/null || echo 'BAD: T.misc pile error' # This should complain about missing atan2 argument: $awk 'BEGIN { atan2(1) }' 2>foo grep 'requires two arg' foo >/dev/null || echo 'BAD: T.misc atan2 error' # This should not core dump: $awk 'BEGIN { f() } function f(A) { delete A[1] } ' if test -r core; then echo 1>&2 "BAD: T.misc delete dropped core"; fi # nasty one: should not be able to overwrite constants $awk 'BEGIN { gsub(/ana/,"anda","banana") printf "the monkey ate a %s\n", "banana" } ' >/dev/null 2>foo grep 'syntax error' foo >/dev/null || echo 'BAD: T.misc gsub banana error' # nasty one: should not be able to overwrite constants $awk 'BEGIN { sub(/ana/,"anda","banana") printf "the monkey ate a %s\n", "banana" } ' >/dev/null 2>foo grep 'syntax error' foo >/dev/null || echo 'BAD: T.misc sub banana error' # line numbers used to double-count comments $awk '# # # /x ' >/dev/null 2>foo grep 'line 4' foo >/dev/null || echo 'BAD: T.misc lineno' echo 'x \y' >foo1 $awk 'BEGIN { print "x\f\r\b\v\a\\y" }' >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc weird chars' echo 0 >foo1 $awk ' BEGIN { exit } { print } END { print NR }' >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc BEGIN exit' echo 1 >foo1 $awk ' { exit } END { print NR }' /etc/passwd >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc immmediate exit' echo 1 >foo1 $awk ' {i = 1; while (i <= NF) {if (i == NF) exit; i++ } } END { print NR }' /etc/passwd >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc immmediate exit 2' echo 1 >foo1 $awk ' function f() { i = 1; while (i <= NF) {if (i == NF) return NR; i++ } } { if (f() == 1) exit } END { print NR }' /etc/passwd >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc while return' echo 1 >foo1 $awk ' function f() { split("a b c", arr) for (i in arr) {if (i == 3) return NR; i++ } } { if (f() == 1) exit } END { print NR }' /etc/passwd >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc while return' echo 1 >foo1 $awk ' {i = 1; do { if (i == NF) exit; i++ } while (i <= NF) } END { print NR }' /etc/passwd >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc immmediate exit 3' echo 1 >foo1 $awk ' function f() { i = 1; do { if (i == NF) return NR; i++ } while (i <= NF) } { if (f() == 1) exit } END { print NR }' /etc/passwd >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc do return' echo 1 >foo1 $awk ' {i = 1; do { if (i == NF) break; i++ } while (i <= NF); exit } END { print NR }' /etc/passwd >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc immmediate exit 4' echo 1 >foo1 $awk ' { n = split($0, x) for (i in x) { if (i == 1) exit } } END { print NR }' /etc/passwd >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc immmediate exit 5' echo XXXXXXXX >foo1 $awk 'BEGIN { s = "ab\fc\rd\be" t = s; gsub("[" s "]", "X", t); print t }' >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc weird escapes in char class' $awk '{}' /etc/passwd glop/glop >foo 2>foo2 grep "can't open.*glop" foo2 >/dev/null || echo "BAD: T.misc can't open" echo ' a aa b c ' >foo echo 3 >foo1 $awk 'BEGIN { RS = "" }; END { print NR }' foo >foo2 cmp -s foo1 foo2 || echo 'BAD: T.misc RS botch' t.set0 685727378 9 1 100664 114 ` {$0 = $1; print; print NF, $0; print $2} {$(0) = $1; print; print NF, $0; print $2} { i = 1; $(i) = $i+1; print } t.intest 685727378 9 1 100664 118 ` { line = substr($0, index($0, " ")) print line n = split(line, x) if ($1 in x) print "yes" else print "no" } T.exprconv 685727378 9 1 100775 368 ` echo T.exprconv: check conversion of expr to number awk=${awk-../a.out} $awk ' BEGIN { x = (1 > 0); print x x = (1 < 0); print x x = (1 == 1); print x print ("a" >= "b") print ("b" >= "a") print (0 == 0.0) # x = ((1 == 1e0) && (1 == 10e-1) && (1 == .1e2)); print x exit }' >foo1 echo '1 0 1 0 1 1' >foo2 cmp foo1 foo2 || echo 'BAD: T.exprconv (1 > 0, etc.)' td.1 685727378 9 1 100444 66561 ` root FnYk2ARoSqy5s 0 1 m0130,m322 / daemon x 1 1 m0000,m000 / sys sorry 2 2 m0130,m322 /usr/sys bin sorry 3 4 m0130,m322 /bin rhm Jxoi/5WRkeSf2 5 1 m0130,m322 /usr/guest ken X.68wd1.ijayM 6 1 m0130,m322 /usr/guest dmr C4u3dJWbg7RCk 7 1 mh1092,m069 /usr/guest/dmr doug Ki71crWGxw/yM 8 1 m1660,m025 /usr/guest bwk cI/xCTQIhLiIs 9 1 mh1548,m301 /usr/bwk greg aP/aSvprvNzjs 10 1 m0130,m322 /usr/guest tdk BpqFZxM1OM8fs 12 1 m0130,m322 /usr/tdk ava 39pE5M497AxxA 15 1 m1357,m242 /usr/ava scj y937pkRi0VkSQ 24 1 m5190,m292 /usr/guest mel WdR3IjGmtatqE 26 1 m2019,m285,pounce,lesk /usr/guest agf X3yQDkiqWmPJg 34 1 m1699,m245 /usr/guest llc Z/l25S2gaFn7U 41 1 m1650,m324 /usr/guest lem JuvkSQUElv7mE 43 1 m0220,m157,l /usr/guest uucp sorry 48 1 mh2019,m285,nowitz /usr/spool/uucp nuucp vR1/qGT0tTmKY 48 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico duucp FvLWIgnf7/Yps 48 1 mh2019,m285,nowitz /usr/spool/uucp spm NeULgAzcCIE7Q 49 1 m1988,m322 /usr/guest mb 5qmRMH553bNrQ 83 1 m5163,m207 /usr/guest sif YExH0DpvsP6w6 91 1 m5192,m044 /usr/guest dot cThsU.QsIRNgw 99 1 m5579,m048 /usr/guest rje ti0JsP1n6fIMc 109 1 m5429,m096,jane /usr/guest vgl SUcT5i54Zr97M 112 1 m5579,m048 /usr/guest jrv Gaov1FacwJWRk 114 1 m3887,m204 /usr/guest nls 8lZyoosHv82sA 130 1 m4216,m050 /usr/guest met C7iNv/YNUuK4Y 132 1 m6251,m322 /usr/guest sue CWSau82zCx4TI 156 1 m2591,m148,2c576 /usr/guest ravi rvJNlk5jwLXK6 167 1 m0000,m322 /usr/guest pjw xNQy//GDa8FFg 170 1 m6534,m301 /usr/guest /bin/csh jhc FueJau/xGh7TI 171 1 /usr/guest lck DRw4p0msMLxDk 172 1 m6532,m149 /usr/guest moh fWVEfxwIox8tc 213 1 m7842,m212,home /usr/guest cmb joVuRF4djg5C. 214 1 m1660,m025 /usr/guest dave ABfXiO0cMc7r. 225 1 mh8451,m040 /usr/guest mihalis mwZa8KXHRzkqE 230 1 m2019,m285 /usr/mihalis tgs XRG6tBPcz0kq2 231 1 mh7461,m025 /usr/tgs /usr/cvw/bin/sh uucpa Tqj9p7MbSckWM 238 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico bs fRwQb5d9OGKf6 251 1 m3887,m204 /usr/guest wsb FAV9YYz8p9E7A 254 1 m2591,m148 /usr/guest uucpb A3mRwDQ93/g6o 259 1 mh0000,m000 /usr/spool/uucppublic /usr/lib/uucp/uucico cvw QyAYytOfVlwU6 266 1 mh1548,m301 /usr/cvw /usr/cvw/bin/sh bsb 2ovW8RVTtCJnc 268 1 mh8092,m150 /usr/bsb dsj UWawW3hN0sxAM 276 1 mh6784,m164 /usr/dsj mrg s6Hg32FrhOATs 277 1 mh6784,m164 /usr/mrg lwf FF27akAjJ5MOs 281 1 mh8085,mh102,lwf /usr/guest kam ze/k68Ms3dthg 287 1 m5579,m048 /usr/guest ejs /cyBUkbW.D7uU 290 1 m0000,m000 /usr/guest ark z/IgEAQYIBpOw 292 1 mh6947,m215,ark /usr/ark kfc 7W6ZdiDwb3kZc 303 1 m6581,m266 /usr/guest rob xOkmkcOe3Nrgc 304 1 m0130,m322 /usr/guest theo cscWu8sY7LXaM 307 1 m8417,m169 /usr/guest /bin/sh djr 1Jk/Y729gZOS6 309 1 M7701,M097 /usr/guest wmc 9IjUIKaH9J3BQ 312 1 mh8444,m050,wmco /usr/guest bart /jEdquTKW.ytM 313 1 /usr/guest /bin/sh sally B/fSPToWep5DQ 314 1 /usr/guest /bin/sh ehg kDDmV7EV6Rgb2 320 1 mh8732,m050,ehg /usr/ehg dds m7QmYNMtgj89g 324 1 /usr/dds libr sorry 330 1 /usr/mel/books dbm 7Ae8dDNmT00bI 334 1 m8896,m091 /usr/guest srm w7t1dxime7v6E 362 1 /usr/srm csh jkh e9fuiOFbFISOk 363 1 /usr/guest aek IIioZy5hT7c4o 365 1 /usr/guest tac wM4MxaujpUd5E 377 1 mh0000,m000 /usr/tac jwg m0gyWvNpfv5mk 454 1 mh8632,m336 /usr/jwg hania kUjpPUhNMmqs. 501 1 /usr/guest jerq Dr3oM/S2pl2jY 502 1 /usr/jerq/wrap kjs QVKFALdfgyCpw 503 1 /usr/tgs/kjs jim DP6t0XVwlWOqw 632 1 /usr/guest bwk1 seBQIwB6RQq9s 999 1 mh1548,m301 /usr/bwk claire t6M0uDxCE7h7E 328 1 mh9323,m147 /usr/claire egc xZX3RQm9R4w3. 297 1 m0000,m000 /usr/egc root FnYk2ARoSqy5s 0 1 m0130,m322 / daemon x 1 1 m0000,m000 / sys sorry 2 2 m0130,m322 /usr/sys bin sorry 3 4 m0130,m322 /bin rhm Jxoi/5WRkeSf2 5 1 m0130,m322 /usr/guest ken X.68wd1.ijayM 6 1 m0130,m322 /usr/guest dmr C4u3dJWbg7RCk 7 1 mh1092,m069 /usr/guest/dmr doug Ki71crWGxw/yM 8 1 m1660,m025 /usr/guest bwk cI/xCTQIhLiIs 9 1 mh1548,m301 /usr/bwk greg aP/aSvprvNzjs 10 1 m0130,m322 /usr/guest tdk BpqFZxM1OM8fs 12 1 m0130,m322 /usr/tdk ava 39pE5M497AxxA 15 1 m1357,m242 /usr/ava scj y937pkRi0VkSQ 24 1 m5190,m292 /usr/guest mel WdR3IjGmtatqE 26 1 m2019,m285,pounce,lesk /usr/guest agf X3yQDkiqWmPJg 34 1 m1699,m245 /usr/guest llc Z/l25S2gaFn7U 41 1 m1650,m324 /usr/guest lem JuvkSQUElv7mE 43 1 m0220,m157,l /usr/guest uucp sorry 48 1 mh2019,m285,nowitz /usr/spool/uucp nuucp vR1/qGT0tTmKY 48 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico duucp FvLWIgnf7/Yps 48 1 mh2019,m285,nowitz /usr/spool/uucp spm NeULgAzcCIE7Q 49 1 m1988,m322 /usr/guest mb 5qmRMH553bNrQ 83 1 m5163,m207 /usr/guest sif YExH0DpvsP6w6 91 1 m5192,m044 /usr/guest dot cThsU.QsIRNgw 99 1 m5579,m048 /usr/guest rje ti0JsP1n6fIMc 109 1 m5429,m096,jane /usr/guest vgl SUcT5i54Zr97M 112 1 m5579,m048 /usr/guest jrv Gaov1FacwJWRk 114 1 m3887,m204 /usr/guest nls 8lZyoosHv82sA 130 1 m4216,m050 /usr/guest met C7iNv/YNUuK4Y 132 1 m6251,m322 /usr/guest sue CWSau82zCx4TI 156 1 m2591,m148,2c576 /usr/guest ravi rvJNlk5jwLXK6 167 1 m0000,m322 /usr/guest pjw xNQy//GDa8FFg 170 1 m6534,m301 /usr/guest /bin/csh jhc FueJau/xGh7TI 171 1 /usr/guest lck DRw4p0msMLxDk 172 1 m6532,m149 /usr/guest moh fWVEfxwIox8tc 213 1 m7842,m212,home /usr/guest cmb joVuRF4djg5C. 214 1 m1660,m025 /usr/guest dave ABfXiO0cMc7r. 225 1 mh8451,m040 /usr/guest mihalis mwZa8KXHRzkqE 230 1 m2019,m285 /usr/mihalis tgs XRG6tBPcz0kq2 231 1 mh7461,m025 /usr/tgs /usr/cvw/bin/sh uucpa Tqj9p7MbSckWM 238 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico bs fRwQb5d9OGKf6 251 1 m3887,m204 /usr/guest wsb FAV9YYz8p9E7A 254 1 m2591,m148 /usr/guest uucpb A3mRwDQ93/g6o 259 1 mh0000,m000 /usr/spool/uucppublic /usr/lib/uucp/uucico cvw QyAYytOfVlwU6 266 1 mh1548,m301 /usr/cvw /usr/cvw/bin/sh bsb 2ovW8RVTtCJnc 268 1 mh8092,m150 /usr/bsb dsj UWawW3hN0sxAM 276 1 mh6784,m164 /usr/dsj mrg s6Hg32FrhOATs 277 1 mh6784,m164 /usr/mrg lwf FF27akAjJ5MOs 281 1 mh8085,mh102,lwf /usr/guest kam ze/k68Ms3dthg 287 1 m5579,m048 /usr/guest ejs /cyBUkbW.D7uU 290 1 m0000,m000 /usr/guest ark z/IgEAQYIBpOw 292 1 mh6947,m215,ark /usr/ark kfc 7W6ZdiDwb3kZc 303 1 m6581,m266 /usr/guest rob xOkmkcOe3Nrgc 304 1 m0130,m322 /usr/guest theo cscWu8sY7LXaM 307 1 m8417,m169 /usr/guest /bin/sh djr 1Jk/Y729gZOS6 309 1 M7701,M097 /usr/guest wmc 9IjUIKaH9J3BQ 312 1 mh8444,m050,wmco /usr/guest bart /jEdquTKW.ytM 313 1 /usr/guest /bin/sh sally B/fSPToWep5DQ 314 1 /usr/guest /bin/sh ehg kDDmV7EV6Rgb2 320 1 mh8732,m050,ehg /usr/ehg dds m7QmYNMtgj89g 324 1 /usr/dds libr sorry 330 1 /usr/mel/books dbm 7Ae8dDNmT00bI 334 1 m8896,m091 /usr/guest srm w7t1dxime7v6E 362 1 /usr/srm csh jkh e9fuiOFbFISOk 363 1 /usr/guest aek IIioZy5hT7c4o 365 1 /usr/guest tac wM4MxaujpUd5E 377 1 mh0000,m000 /usr/tac jwg m0gyWvNpfv5mk 454 1 mh8632,m336 /usr/jwg hania kUjpPUhNMmqs. 501 1 /usr/guest jerq Dr3oM/S2pl2jY 502 1 /usr/jerq/wrap kjs QVKFALdfgyCpw 503 1 /usr/tgs/kjs jim DP6t0XVwlWOqw 632 1 /usr/guest bwk1 seBQIwB6RQq9s 999 1 mh1548,m301 /usr/bwk claire t6M0uDxCE7h7E 328 1 mh9323,m147 /usr/claire egc xZX3RQm9R4w3. 297 1 m0000,m000 /usr/egc root FnYk2ARoSqy5s 0 1 m0130,m322 / daemon x 1 1 m0000,m000 / sys sorry 2 2 m0130,m322 /usr/sys bin sorry 3 4 m0130,m322 /bin rhm Jxoi/5WRkeSf2 5 1 m0130,m322 /usr/guest ken X.68wd1.ijayM 6 1 m0130,m322 /usr/guest dmr C4u3dJWbg7RCk 7 1 mh1092,m069 /usr/guest/dmr doug Ki71crWGxw/yM 8 1 m1660,m025 /usr/guest bwk cI/xCTQIhLiIs 9 1 mh1548,m301 /usr/bwk greg aP/aSvprvNzjs 10 1 m0130,m322 /usr/guest tdk BpqFZxM1OM8fs 12 1 m0130,m322 /usr/tdk ava 39pE5M497AxxA 15 1 m1357,m242 /usr/ava scj y937pkRi0VkSQ 24 1 m5190,m292 /usr/guest mel WdR3IjGmtatqE 26 1 m2019,m285,pounce,lesk /usr/guest agf X3yQDkiqWmPJg 34 1 m1699,m245 /usr/guest llc Z/l25S2gaFn7U 41 1 m1650,m324 /usr/guest lem JuvkSQUElv7mE 43 1 m0220,m157,l /usr/guest uucp sorry 48 1 mh2019,m285,nowitz /usr/spool/uucp nuucp vR1/qGT0tTmKY 48 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico duucp FvLWIgnf7/Yps 48 1 mh2019,m285,nowitz /usr/spool/uucp spm NeULgAzcCIE7Q 49 1 m1988,m322 /usr/guest mb 5qmRMH553bNrQ 83 1 m5163,m207 /usr/guest sif YExH0DpvsP6w6 91 1 m5192,m044 /usr/guest dot cThsU.QsIRNgw 99 1 m5579,m048 /usr/guest rje ti0JsP1n6fIMc 109 1 m5429,m096,jane /usr/guest vgl SUcT5i54Zr97M 112 1 m5579,m048 /usr/guest jrv Gaov1FacwJWRk 114 1 m3887,m204 /usr/guest nls 8lZyoosHv82sA 130 1 m4216,m050 /usr/guest met C7iNv/YNUuK4Y 132 1 m6251,m322 /usr/guest sue CWSau82zCx4TI 156 1 m2591,m148,2c576 /usr/guest ravi rvJNlk5jwLXK6 167 1 m0000,m322 /usr/guest pjw xNQy//GDa8FFg 170 1 m6534,m301 /usr/guest /bin/csh jhc FueJau/xGh7TI 171 1 /usr/guest lck DRw4p0msMLxDk 172 1 m6532,m149 /usr/guest moh fWVEfxwIox8tc 213 1 m7842,m212,home /usr/guest cmb joVuRF4djg5C. 214 1 m1660,m025 /usr/guest dave ABfXiO0cMc7r. 225 1 mh8451,m040 /usr/guest mihalis mwZa8KXHRzkqE 230 1 m2019,m285 /usr/mihalis tgs XRG6tBPcz0kq2 231 1 mh7461,m025 /usr/tgs /usr/cvw/bin/sh uucpa Tqj9p7MbSckWM 238 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico bs fRwQb5d9OGKf6 251 1 m3887,m204 /usr/guest wsb FAV9YYz8p9E7A 254 1 m2591,m148 /usr/guest uucpb A3mRwDQ93/g6o 259 1 mh0000,m000 /usr/spool/uucppublic /usr/lib/uucp/uucico cvw QyAYytOfVlwU6 266 1 mh1548,m301 /usr/cvw /usr/cvw/bin/sh bsb 2ovW8RVTtCJnc 268 1 mh8092,m150 /usr/bsb dsj UWawW3hN0sxAM 276 1 mh6784,m164 /usr/dsj mrg s6Hg32FrhOATs 277 1 mh6784,m164 /usr/mrg lwf FF27akAjJ5MOs 281 1 mh8085,mh102,lwf /usr/guest kam ze/k68Ms3dthg 287 1 m5579,m048 /usr/guest ejs /cyBUkbW.D7uU 290 1 m0000,m000 /usr/guest ark z/IgEAQYIBpOw 292 1 mh6947,m215,ark /usr/ark kfc 7W6ZdiDwb3kZc 303 1 m6581,m266 /usr/guest rob xOkmkcOe3Nrgc 304 1 m0130,m322 /usr/guest theo cscWu8sY7LXaM 307 1 m8417,m169 /usr/guest /bin/sh djr 1Jk/Y729gZOS6 309 1 M7701,M097 /usr/guest wmc 9IjUIKaH9J3BQ 312 1 mh8444,m050,wmco /usr/guest bart /jEdquTKW.ytM 313 1 /usr/guest /bin/sh sally B/fSPToWep5DQ 314 1 /usr/guest /bin/sh ehg kDDmV7EV6Rgb2 320 1 mh8732,m050,ehg /usr/ehg dds m7QmYNMtgj89g 324 1 /usr/dds libr sorry 330 1 /usr/mel/books dbm 7Ae8dDNmT00bI 334 1 m8896,m091 /usr/guest srm w7t1dxime7v6E 362 1 /usr/srm csh jkh e9fuiOFbFISOk 363 1 /usr/guest aek IIioZy5hT7c4o 365 1 /usr/guest tac wM4MxaujpUd5E 377 1 mh0000,m000 /usr/tac jwg m0gyWvNpfv5mk 454 1 mh8632,m336 /usr/jwg hania kUjpPUhNMmqs. 501 1 /usr/guest jerq Dr3oM/S2pl2jY 502 1 /usr/jerq/wrap kjs QVKFALdfgyCpw 503 1 /usr/tgs/kjs jim DP6t0XVwlWOqw 632 1 /usr/guest bwk1 seBQIwB6RQq9s 999 1 mh1548,m301 /usr/bwk claire t6M0uDxCE7h7E 328 1 mh9323,m147 /usr/claire egc xZX3RQm9R4w3. 297 1 m0000,m000 /usr/egc root FnYk2ARoSqy5s 0 1 m0130,m322 / daemon x 1 1 m0000,m000 / sys sorry 2 2 m0130,m322 /usr/sys bin sorry 3 4 m0130,m322 /bin rhm Jxoi/5WRkeSf2 5 1 m0130,m322 /usr/guest ken X.68wd1.ijayM 6 1 m0130,m322 /usr/guest dmr C4u3dJWbg7RCk 7 1 mh1092,m069 /usr/guest/dmr doug Ki71crWGxw/yM 8 1 m1660,m025 /usr/guest bwk cI/xCTQIhLiIs 9 1 mh1548,m301 /usr/bwk greg aP/aSvprvNzjs 10 1 m0130,m322 /usr/guest tdk BpqFZxM1OM8fs 12 1 m0130,m322 /usr/tdk ava 39pE5M497AxxA 15 1 m1357,m242 /usr/ava scj y937pkRi0VkSQ 24 1 m5190,m292 /usr/guest mel WdR3IjGmtatqE 26 1 m2019,m285,pounce,lesk /usr/guest agf X3yQDkiqWmPJg 34 1 m1699,m245 /usr/guest llc Z/l25S2gaFn7U 41 1 m1650,m324 /usr/guest lem JuvkSQUElv7mE 43 1 m0220,m157,l /usr/guest uucp sorry 48 1 mh2019,m285,nowitz /usr/spool/uucp nuucp vR1/qGT0tTmKY 48 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico duucp FvLWIgnf7/Yps 48 1 mh2019,m285,nowitz /usr/spool/uucp spm NeULgAzcCIE7Q 49 1 m1988,m322 /usr/guest mb 5qmRMH553bNrQ 83 1 m5163,m207 /usr/guest sif YExH0DpvsP6w6 91 1 m5192,m044 /usr/guest dot cThsU.QsIRNgw 99 1 m5579,m048 /usr/guest rje ti0JsP1n6fIMc 109 1 m5429,m096,jane /usr/guest vgl SUcT5i54Zr97M 112 1 m5579,m048 /usr/guest jrv Gaov1FacwJWRk 114 1 m3887,m204 /usr/guest nls 8lZyoosHv82sA 130 1 m4216,m050 /usr/guest met C7iNv/YNUuK4Y 132 1 m6251,m322 /usr/guest sue CWSau82zCx4TI 156 1 m2591,m148,2c576 /usr/guest ravi rvJNlk5jwLXK6 167 1 m0000,m322 /usr/guest pjw xNQy//GDa8FFg 170 1 m6534,m301 /usr/guest /bin/csh jhc FueJau/xGh7TI 171 1 /usr/guest lck DRw4p0msMLxDk 172 1 m6532,m149 /usr/guest moh fWVEfxwIox8tc 213 1 m7842,m212,home /usr/guest cmb joVuRF4djg5C. 214 1 m1660,m025 /usr/guest dave ABfXiO0cMc7r. 225 1 mh8451,m040 /usr/guest mihalis mwZa8KXHRzkqE 230 1 m2019,m285 /usr/mihalis tgs XRG6tBPcz0kq2 231 1 mh7461,m025 /usr/tgs /usr/cvw/bin/sh uucpa Tqj9p7MbSckWM 238 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico bs fRwQb5d9OGKf6 251 1 m3887,m204 /usr/guest wsb FAV9YYz8p9E7A 254 1 m2591,m148 /usr/guest uucpb A3mRwDQ93/g6o 259 1 mh0000,m000 /usr/spool/uucppublic /usr/lib/uucp/uucico cvw QyAYytOfVlwU6 266 1 mh1548,m301 /usr/cvw /usr/cvw/bin/sh bsb 2ovW8RVTtCJnc 268 1 mh8092,m150 /usr/bsb dsj UWawW3hN0sxAM 276 1 mh6784,m164 /usr/dsj mrg s6Hg32FrhOATs 277 1 mh6784,m164 /usr/mrg lwf FF27akAjJ5MOs 281 1 mh8085,mh102,lwf /usr/guest kam ze/k68Ms3dthg 287 1 m5579,m048 /usr/guest ejs /cyBUkbW.D7uU 290 1 m0000,m000 /usr/guest ark z/IgEAQYIBpOw:292:1:mh6947,m215,ark:/usr/ark: kfc 7W6ZdiDwb3kZc:303:1:m6581,m266:/usr/guest: rob xOkmkcOe3Nrgc:304:1:m0130,m322:/usr/guest: theo cscWu8sY7LXaM:307:1:m8417,m169:/usr/guest:/bin/sh djr 1Jk/Y729gZOS6:309:1:M7701,M097:/usr/guest: wmc 9IjUIKaH9J3BQ:312:1:mh8444,m050,wmco:/usr/guest: bart /jEdquTKW.ytM:313:1::/usr/guest:/bin/sh sally B/fSPToWep5DQ:314:1::/usr/guest:/bin/sh ehg kDDmV7EV6Rgb2:320:1:mh8732,m050,ehg:/usr/ehg: dds m7QmYNMtgj89g:324:1::/usr/dds: libr sorry:330:1::/usr/mel/books: dbm 7Ae8dDNmT00bI:334:1:m8896,m091:/usr/guest: srm w7t1dxime7v6E:362:1::/usr/srm:csh jkh e9fuiOFbFISOk:363:1::/usr/guest: aek IIioZy5hT7c4o:365:1::/usr/guest: tac wM4MxaujpUd5E:377:1:mh0000,m000:/usr/tac: jwg m0gyWvNpfv5mk:454:1:mh8632,m336:/usr/jwg: hania kUjpPUhNMmqs.:501:1::/usr/guest: jerq Dr3oM/S2pl2jY:502:1::/usr/jerq/wrap: kjs QVKFALdfgyCpw:503:1::/usr/tgs/kjs: jim DP6t0XVwlWOqw:632:1::/usr/guest: bwk1 seBQIwB6RQq9s:999:1:mh1548,m301:/usr/bwk: claire t6M0uDxCE7h7E:328:1:mh9323,m147:/usr/claire: egc xZX3RQm9R4w3.:297:1:m0000,m000:/usr/egc: root FnYk2ARoSqy5s:0:1:m0130,m322:/: daemon x:1:1:m0000,m000:/: sys sorry:2:2:m0130,m322:/usr/sys: bin sorry:3:4:m0130,m322:/bin: rhm Jxoi/5WRkeSf2:5:1:m0130,m322:/usr/guest: ken X.68wd1.ijayM:6:1:m0130,m322:/usr/guest: dmr C4u3dJWbg7RCk:7:1:mh1092,m069:/usr/guest/dmr: doug Ki71crWGxw/yM:8:1:m1660,m025:/usr/guest: bwk cI/xCTQIhLiIs:9:1:mh1548,m301:/usr/bwk: greg aP/aSvprvNzjs:10:1:m0130,m322:/usr/guest: tdk BpqFZxM1OM8fs:12:1:m0130,m322:/usr/tdk: ava 39pE5M497AxxA:15:1:m1357,m242:/usr/ava: scj y937pkRi0VkSQ:24:1:m5190,m292:/usr/guest: mel WdR3IjGmtatqE:26:1:m2019,m285,pounce,lesk:/usr/guest: agf X3yQDkiqWmPJg:34:1:m1699,m245:/usr/guest: llc Z/l25S2gaFn7U:41:1:m1650,m324:/usr/guest: lem JuvkSQUElv7mE:43:1:m0220,m157,l:/usr/guest: uucp sorry:48:1:mh2019,m285,nowitz:/usr/spool/uucp: nuucp vR1/qGT0tTmKY:48:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico duucp FvLWIgnf7/Yps:48:1:mh2019,m285,nowitz:/usr/spool/uucp: spm NeULgAzcCIE7Q:49:1:m1988,m322:/usr/guest: mb 5qmRMH553bNrQ:83:1:m5163,m207:/usr/guest: sif YExH0DpvsP6w6:91:1:m5192,m044:/usr/guest: dot cThsU.QsIRNgw:99:1:m5579,m048:/usr/guest: rje ti0JsP1n6fIMc:109:1:m5429,m096,jane:/usr/guest: vgl SUcT5i54Zr97M:112:1:m5579,m048:/usr/guest: jrv Gaov1FacwJWRk:114:1:m3887,m204:/usr/guest: nls 8lZyoosHv82sA:130:1:m4216,m050:/usr/guest: met C7iNv/YNUuK4Y:132:1:m6251,m322:/usr/guest: sue CWSau82zCx4TI:156:1:m2591,m148,2c576:/usr/guest: ravi rvJNlk5jwLXK6:167:1:m0000,m322:/usr/guest: pjw xNQy//GDa8FFg:170:1:m6534,m301:/usr/guest:/bin/csh jhc FueJau/xGh7TI:171:1::/usr/guest: lck DRw4p0msMLxDk:172:1:m6532,m149:/usr/guest: moh fWVEfxwIox8tc:213:1:m7842,m212,home:/usr/guest: cmb joVuRF4djg5C.:214:1:m1660,m025:/usr/guest: dave ABfXiO0cMc7r.:225:1:mh8451,m040:/usr/guest: mihalis mwZa8KXHRzkqE:230:1:m2019,m285:/usr/mihalis: tgs XRG6tBPcz0kq2:231:1:mh7461,m025:/usr/tgs:/usr/cvw/bin/sh uucpa Tqj9p7MbSckWM:238:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico bs fRwQb5d9OGKf6:251:1:m3887,m204:/usr/guest: wsb FAV9YYz8p9E7A:254:1:m2591,m148:/usr/guest: uucpb A3mRwDQ93/g6o:259:1:mh0000,m000:/usr/spool/uucppublic:/usr/lib/uucp/uucico cvw QyAYytOfVlwU6:266:1:mh1548,m301:/usr/cvw:/usr/cvw/bin/sh bsb 2ovW8RVTtCJnc:268:1:mh8092,m150:/usr/bsb: dsj UWawW3hN0sxAM:276:1:mh6784,m164:/usr/dsj: mrg s6Hg32FrhOATs:277:1:mh6784,m164:/usr/mrg: lwf FF27akAjJ5MOs:281:1:mh8085,mh102,lwf:/usr/guest: kam ze/k68Ms3dthg:287:1:m5579,m048:/usr/guest: ejs /cyBUkbW.D7uU:290:1:m0000,m000:/usr/guest: ark z/IgEAQYIBpOw:292:1:mh6947,m215,ark:/usr/ark: kfc 7W6ZdiDwb3kZc:303:1:m6581,m266:/usr/guest: rob xOkmkcOe3Nrgc:304:1:m0130,m322:/usr/guest: theo cscWu8sY7LXaM:307:1:m8417,m169:/usr/guest:/bin/sh djr 1Jk/Y729gZOS6:309:1:M7701,M097:/usr/guest: wmc 9IjUIKaH9J3BQ:312:1:mh8444,m050,wmco:/usr/guest: bart /jEdquTKW.ytM:313:1::/usr/guest:/bin/sh sally B/fSPToWep5DQ:314:1::/usr/guest:/bin/sh ehg kDDmV7EV6Rgb2:320:1:mh8732,m050,ehg:/usr/ehg: dds m7QmYNMtgj89g:324:1::/usr/dds: libr sorry:330:1::/usr/mel/books: dbm 7Ae8dDNmT00bI:334:1:m8896,m091:/usr/guest: srm w7t1dxime7v6E:362:1::/usr/srm:csh jkh e9fuiOFbFISOk:363:1::/usr/guest: aek IIioZy5hT7c4o:365:1::/usr/guest: tac wM4MxaujpUd5E:377:1:mh0000,m000:/usr/tac: jwg m0gyWvNpfv5mk:454:1:mh8632,m336:/usr/jwg: hania kUjpPUhNMmqs.:501:1::/usr/guest: jerq Dr3oM/S2pl2jY:502:1::/usr/jerq/wrap: kjs QVKFALdfgyCpw:503:1::/usr/tgs/kjs: jim DP6t0XVwlWOqw:632:1::/usr/guest: bwk1 seBQIwB6RQq9s:999:1:mh1548,m301:/usr/bwk: claire t6M0uDxCE7h7E:328:1:mh9323,m147:/usr/claire: egc xZX3RQm9R4w3.:297:1:m0000,m000:/usr/egc: root FnYk2ARoSqy5s:0:1:m0130,m322:/: daemon x:1:1:m0000,m000:/: sys sorry:2:2:m0130,m322:/usr/sys: bin sorry:3:4:m0130,m322:/bin: rhm Jxoi/5WRkeSf2:5:1:m0130,m322:/usr/guest: ken X.68wd1.ijayM:6:1:m0130,m322:/usr/guest: dmr C4u3dJWbg7RCk:7:1:mh1092,m069:/usr/guest/dmr: doug Ki71crWGxw/yM:8:1:m1660,m025:/usr/guest: bwk cI/xCTQIhLiIs:9:1:mh1548,m301:/usr/bwk: greg aP/aSvprvNzjs:10:1:m0130,m322:/usr/guest: tdk BpqFZxM1OM8fs:12:1:m0130,m322:/usr/tdk: ava 39pE5M497AxxA:15:1:m1357,m242:/usr/ava: scj y937pkRi0VkSQ:24:1:m5190,m292:/usr/guest: mel WdR3IjGmtatqE:26:1:m2019,m285,pounce,lesk:/usr/guest: agf X3yQDkiqWmPJg:34:1:m1699,m245:/usr/guest: llc Z/l25S2gaFn7U:41:1:m1650,m324:/usr/guest: lem JuvkSQUElv7mE:43:1:m0220,m157,l:/usr/guest: uucp sorry:48:1:mh2019,m285,nowitz:/usr/spool/uucp: nuucp vR1/qGT0tTmKY:48:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico duucp FvLWIgnf7/Yps:48:1:mh2019,m285,nowitz:/usr/spool/uucp: spm NeULgAzcCIE7Q:49:1:m1988,m322:/usr/guest: mb 5qmRMH553bNrQ:83:1:m5163,m207:/usr/guest: sif YExH0DpvsP6w6:91:1:m5192,m044:/usr/guest: dot cThsU.QsIRNgw:99:1:m5579,m048:/usr/guest: rje ti0JsP1n6fIMc:109:1:m5429,m096,jane:/usr/guest: vgl SUcT5i54Zr97M:112:1:m5579,m048:/usr/guest: jrv Gaov1FacwJWRk:114:1:m3887,m204:/usr/guest: nls 8lZyoosHv82sA:130:1:m4216,m050:/usr/guest: met C7iNv/YNUuK4Y:132:1:m6251,m322:/usr/guest: sue CWSau82zCx4TI:156:1:m2591,m148,2c576:/usr/guest: ravi rvJNlk5jwLXK6:167:1:m0000,m322:/usr/guest: pjw xNQy//GDa8FFg:170:1:m6534,m301:/usr/guest:/bin/csh jhc FueJau/xGh7TI:171:1::/usr/guest: lck DRw4p0msMLxDk:172:1:m6532,m149:/usr/guest: moh fWVEfxwIox8tc:213:1:m7842,m212,home:/usr/guest: cmb joVuRF4djg5C.:214:1:m1660,m025:/usr/guest: dave ABfXiO0cMc7r.:225:1:mh8451,m040:/usr/guest: mihalis mwZa8KXHRzkqE:230:1:m2019,m285:/usr/mihalis: tgs XRG6tBPcz0kq2:231:1:mh7461,m025:/usr/tgs:/usr/cvw/bin/sh uucpa Tqj9p7MbSckWM:238:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico bs fRwQb5d9OGKf6:251:1:m3887,m204:/usr/guest: wsb FAV9YYz8p9E7A:254:1:m2591,m148:/usr/guest: uucpb A3mRwDQ93/g6o:259:1:mh0000,m000:/usr/spool/uucppublic:/usr/lib/uucp/uucico cvw QyAYytOfVlwU6:266:1:mh1548,m301:/usr/cvw:/usr/cvw/bin/sh bsb 2ovW8RVTtCJnc:268:1:mh8092,m150:/usr/bsb: dsj UWawW3hN0sxAM:276:1:mh6784,m164:/usr/dsj: mrg s6Hg32FrhOATs:277:1:mh6784,m164:/usr/mrg: lwf FF27akAjJ5MOs:281:1:mh8085,mh102,lwf:/usr/guest: kam ze/k68Ms3dthg:287:1:m5579,m048:/usr/guest: ejs /cyBUkbW.D7uU:290:1:m0000,m000:/usr/guest: ark z/IgEAQYIBpOw:292:1:mh6947,m215,ark:/usr/ark: kfc 7W6ZdiDwb3kZc:303:1:m6581,m266:/usr/guest: rob xOkmkcOe3Nrgc:304:1:m0130,m322:/usr/guest: theo cscWu8sY7LXaM:307:1:m8417,m169:/usr/guest:/bin/sh djr 1Jk/Y729gZOS6:309:1:M7701,M097:/usr/guest: wmc 9IjUIKaH9J3BQ:312:1:mh8444,m050,wmco:/usr/guest: bart /jEdquTKW.ytM:313:1::/usr/guest:/bin/sh sally B/fSPToWep5DQ:314:1::/usr/guest:/bin/sh ehg kDDmV7EV6Rgb2:320:1:mh8732,m050,ehg:/usr/ehg: dds m7QmYNMtgj89g:324:1::/usr/dds: libr sorry:330:1::/usr/mel/books: dbm 7Ae8dDNmT00bI:334:1:m8896,m091:/usr/guest: srm w7t1dxime7v6E:362:1::/usr/srm:csh jkh e9fuiOFbFISOk:363:1::/usr/guest: aek IIioZy5hT7c4o:365:1::/usr/guest: tac wM4MxaujpUd5E:377:1:mh0000,m000:/usr/tac: jwg m0gyWvNpfv5mk:454:1:mh8632,m336:/usr/jwg: hania kUjpPUhNMmqs.:501:1::/usr/guest: jerq Dr3oM/S2pl2jY:502:1::/usr/jerq/wrap: kjs QVKFALdfgyCpw:503:1::/usr/tgs/kjs: jim DP6t0XVwlWOqw:632:1::/usr/guest: bwk1 seBQIwB6RQq9s:999:1:mh1548,m301:/usr/bwk: claire t6M0uDxCE7h7E:328:1:mh9323,m147:/usr/claire: egc xZX3RQm9R4w3.:297:1:m0000,m000:/usr/egc: root FnYk2ARoSqy5s:0:1:m0130,m322:/: daemon x:1:1:m0000,m000:/: sys sorry:2:2:m0130,m322:/usr/sys: bin sorry:3:4:m0130,m322:/bin: rhm Jxoi/5WRkeSf2:5:1:m0130,m322:/usr/guest: ken X.68wd1.ijayM:6:1:m0130,m322:/usr/guest: dmr C4u3dJWbg7RCk:7:1:mh1092,m069:/usr/guest/dmr: doug Ki71crWGxw/yM:8:1:m1660,m025:/usr/guest: bwk cI/xCTQIhLiIs:9:1:mh1548,m301:/usr/bwk: greg aP/aSvprvNzjs:10:1:m0130,m322:/usr/guest: tdk BpqFZxM1OM8fs:12:1:m0130,m322:/usr/tdk: ava 39pE5M497AxxA:15:1:m1357,m242:/usr/ava: scj y937pkRi0VkSQ:24:1:m5190,m292:/usr/guest: mel WdR3IjGmtatqE:26:1:m2019,m285,pounce,lesk:/usr/guest: agf X3yQDkiqWmPJg:34:1:m1699,m245:/usr/guest: llc Z/l25S2gaFn7U:41:1:m1650,m324:/usr/guest: lem JuvkSQUElv7mE:43:1:m0220,m157,l:/usr/guest: uucp sorry:48:1:mh2019,m285,nowitz:/usr/spool/uucp: nuucp vR1/qGT0tTmKY:48:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico duucp FvLWIgnf7/Yps:48:1:mh2019,m285,nowitz:/usr/spool/uucp: spm NeULgAzcCIE7Q:49:1:m1988,m322:/usr/guest: mb 5qmRMH553bNrQ:83:1:m5163,m207:/usr/guest: sif YExH0DpvsP6w6:91:1:m5192,m044:/usr/guest: dot cThsU.QsIRNgw:99:1:m5579,m048:/usr/guest: rje ti0JsP1n6fIMc:109:1:m5429,m096,jane:/usr/guest: vgl SUcT5i54Zr97M:112:1:m5579,m048:/usr/guest: jrv Gaov1FacwJWRk:114:1:m3887,m204:/usr/guest: nls 8lZyoosHv82sA:130:1:m4216,m050:/usr/guest: met C7iNv/YNUuK4Y:132:1:m6251,m322:/usr/guest: sue CWSau82zCx4TI:156:1:m2591,m148,2c576:/usr/guest: ravi rvJNlk5jwLXK6:167:1:m0000,m322:/usr/guest: pjw xNQy//GDa8FFg:170:1:m6534,m301:/usr/guest:/bin/csh jhc FueJau/xGh7TI:171:1::/usr/guest: lck DRw4p0msMLxDk:172:1:m6532,m149:/usr/guest: moh fWVEfxwIox8tc:213:1:m7842,m212,home:/usr/guest: cmb joVuRF4djg5C.:214:1:m1660,m025:/usr/guest: dave ABfXiO0cMc7r.:225:1:mh8451,m040:/usr/guest: mihalis mwZa8KXHRzkqE:230:1:m2019,m285:/usr/mihalis: tgs XRG6tBPcz0kq2:231:1:mh7461,m025:/usr/tgs:/usr/cvw/bin/sh uucpa Tqj9p7MbSckWM:238:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico bs fRwQb5d9OGKf6:251:1:m3887,m204:/usr/guest: wsb FAV9YYz8p9E7A:254:1:m2591,m148:/usr/guest: uucpb A3mRwDQ93/g6o:259:1:mh0000,m000:/usr/spool/uucppublic:/usr/lib/uucp/uucico cvw QyAYytOfVlwU6:266:1:mh1548,m301:/usr/cvw:/usr/cvw/bin/sh bsb 2ovW8RVTtCJnc:268:1:mh8092,m150:/usr/bsb: dsj UWawW3hN0sxAM:276:1:mh6784,m164:/usr/dsj: mrg s6Hg32FrhOATs:277:1:mh6784,m164:/usr/mrg: lwf FF27akAjJ5MOs:281:1:mh8085,mh102,lwf:/usr/guest: kam ze/k68Ms3dthg:287:1:m5579,m048:/usr/guest: ejs /cyBUkbW.D7uU:290:1:m0000,m000:/usr/guest: ark z/IgEAQYIBpOw:292:1:mh6947,m215,ark:/usr/ark: kfc 7W6ZdiDwb3kZc:303:1:m6581,m266:/usr/guest: rob xOkmkcOe3Nrgc:304:1:m0130,m322:/usr/guest: theo cscWu8sY7LXaM:307:1:m8417,m169:/usr/guest:/bin/sh djr 1Jk/Y729gZOS6:309:1:M7701,M097:/usr/guest: wmc 9IjUIKaH9J3BQ:312:1:mh8444,m050,wmco:/usr/guest: bart /jEdquTKW.ytM:313:1::/usr/guest:/bin/sh sally B/fSPToWep5DQ:314:1::/usr/guest:/bin/sh ehg kDDmV7EV6Rgb2:320:1:mh8732,m050,ehg:/usr/ehg: dds m7QmYNMtgj89g:324:1::/usr/dds: libr sorry:330:1::/usr/mel/books: dbm 7Ae8dDNmT00bI:334:1:m8896,m091:/usr/guest: srm w7t1dxime7v6E:362:1::/usr/srm:csh jkh e9fuiOFbFISOk:363:1::/usr/guest: aek IIioZy5hT7c4o:365:1::/usr/guest: tac wM4MxaujpUd5E:377:1:mh0000,m000:/usr/tac: jwg m0gyWvNpfv5mk:454:1:mh8632,m336:/usr/jwg: hania kUjpPUhNMmqs.:501:1::/usr/guest: jerq Dr3oM/S2pl2jY:502:1::/usr/jerq/wrap: kjs QVKFALdfgyCpw:503:1::/usr/tgs/kjs: jim DP6t0XVwlWOqw:632:1::/usr/guest: bwk1 seBQIwB6RQq9s:999:1:mh1548,m301:/usr/bwk: claire t6M0uDxCE7h7E:328:1:mh9323,m147:/usr/claire: egc xZX3RQm9R4w3.:297:1:m0000,m000:/usr/egc: root FnYk2ARoSqy5s:0:1:m0130,m322:/: daemon x:1:1:m0000,m000:/: sys sorry:2:2:m0130,m322:/usr/sys: bin sorry:3:4:m0130,m322:/bin: rhm Jxoi/5WRkeSf2:5:1:m0130,m322:/usr/guest: ken X.68wd1.ijayM:6:1:m0130,m322:/usr/guest: dmr C4u3dJWbg7RCk:7:1:mh1092,m069:/usr/guest/dmr: doug Ki71crWGxw/yM:8:1:m1660,m025:/usr/guest: bwk cI/xCTQIhLiIs:9:1:mh1548,m301:/usr/bwk: greg aP/aSvprvNzjs:10:1:m0130,m322:/usr/guest: tdk BpqFZxM1OM8fs:12:1:m0130,m322:/usr/tdk: ava 39pE5M497AxxA:15:1:m1357,m242:/usr/ava: scj y937pkRi0VkSQ:24:1:m5190,m292:/usr/guest: mel WdR3IjGmtatqE:26:1:m2019,m285,pounce,lesk:/usr/guest: agf X3yQDkiqWmPJg:34:1:m1699,m245:/usr/guest: llc Z/l25S2gaFn7U:41:1:m1650,m324:/usr/guest: lem JuvkSQUElv7mE:43:1:m0220,m157,l:/usr/guest: uucp sorry:48:1:mh2019,m285,nowitz:/usr/spool/uucp: nuucp vR1/qGT0tTmKY:48:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico duucp FvLWIgnf7/Yps:48:1:mh2019,m285,nowitz:/usr/spool/uucp: spm NeULgAzcCIE7Q:49:1:m1988,m322:/usr/guest: mb 5qmRMH553bNrQ:83:1:m5163,m207:/usr/guest: sif YExH0DpvsP6w6:91:1:m5192,m044:/usr/guest: dot cThsU.QsIRNgw:99:1:m5579,m048:/usr/guest: rje ti0JsP1n6fIMc:109:1:m5429,m096,jane:/usr/guest: vgl SUcT5i54Zr97M:112:1:m5579,m048:/usr/guest: jrv Gaov1FacwJWRk:114:1:m3887,m204:/usr/guest: nls 8lZyoosHv82sA:130:1:m4216,m050:/usr/guest: met C7iNv/YNUuK4Y:132:1:m6251,m322:/usr/guest: sue CWSau82zCx4TI:156:1:m2591,m148,2c576:/usr/guest: ravi rvJNlk5jwLXK6:167:1:m0000,m322:/usr/guest: pjw xNQy//GDa8FFg:170:1:m6534,m301:/usr/guest:/bin/csh jhc FueJau/xGh7TI:171:1::/usr/guest: lck DRw4p0msMLxDk:172:1:m6532,m149:/usr/guest: moh fWVEfxwIox8tc:213:1:m7842,m212,home:/usr/guest: cmb joVuRF4djg5C.:214:1:m1660,m025:/usr/guest: dave ABfXiO0cMc7r.:225:1:mh8451,m040:/usr/guest: mihalis mwZa8KXHRzkqE:230:1:m2019,m285:/usr/mihalis: tgs XRG6tBPcz0kq2:231:1:mh7461,m025:/usr/tgs:/usr/cvw/bin/sh uucpa Tqj9p7MbSckWM:238:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico bs fRwQb5d9OGKf6:251:1:m3887,m204:/usr/guest: wsb FAV9YYz8p9E7A:254:1:m2591,m148:/usr/guest: uucpb A3mRwDQ93/g6o:259:1:mh0000,m000:/usr/spool/uucppublic:/usr/lib/uucp/uucico cvw QyAYytOfVlwU6:266:1:mh1548,m301:/usr/cvw:/usr/cvw/bin/sh bsb 2ovW8RVTtCJnc:268:1:mh8092,m150:/usr/bsb: dsj UWawW3hN0sxAM:276:1:mh6784,m164:/usr/dsj: mrg s6Hg32FrhOATs:277:1:mh6784,m164:/usr/mrg: lwf FF27akAjJ5MOs:281:1:mh8085,mh102,lwf:/usr/guest: kam ze/k68Ms3dthg:287:1:m5579,m048:/usr/guest: ejs /cyBUkbW.D7uU:290:1:m0000,m000:/usr/guest: ark z/IgEAQYIBpOw:292:1:mh6947,m215,ark:/usr/ark: kfc 7W6ZdiDwb3kZc:303:1:m6581,m266:/usr/guest: rob xOkmkcOe3Nrgc:304:1:m0130,m322:/usr/guest: theo cscWu8sY7LXaM:307:1:m8417,m169:/usr/guest:/bin/sh djr 1Jk/Y729gZOS6:309:1:M7701,M097:/usr/guest: wmc 9IjUIKaH9J3BQ:312:1:mh8444,m050,wmco:/usr/guest: bart /jEdquTKW.ytM:313:1::/usr/guest:/bin/sh sally B/fSPToWep5DQ:314:1::/usr/guest:/bin/sh ehg kDDmV7EV6Rgb2:320:1:mh8732,m050,ehg:/usr/ehg: dds m7QmYNMtgj89g:324:1::/usr/dds: libr sorry:330:1::/usr/mel/books: dbm 7Ae8dDNmT00bI:334:1:m8896,m091:/usr/guest: srm w7t1dxime7v6E:362:1::/usr/srm:csh jkh e9fuiOFbFISOk:363:1::/usr/guest: aek IIioZy5hT7c4o:365:1::/usr/guest: tac wM4MxaujpUd5E:377:1:mh0000,m000:/usr/tac: jwg m0gyWvNpfv5mk:454:1:mh8632,m336:/usr/jwg: hania kUjpPUhNMmqs.:501:1::/usr/guest: jerq Dr3oM/S2pl2jY:502:1::/usr/jerq/wrap: kjs QVKFALdfgyCpw:503:1::/usr/tgs/kjs: jim DP6t0XVwlWOqw:632:1::/usr/guest: bwk1 seBQIwB6RQq9s:999:1:mh1548,m301:/usr/bwk: claire t6M0uDxCE7h7E:328:1:mh9323,m147:/usr/claire: egc xZX3RQm9R4w3.:297:1:m0000,m000:/usr/egc: root FnYk2ARoSqy5s:0:1:m0130,m322:/: daemon x:1:1:m0000,m000:/: sys sorry:2:2:m0130,m322:/usr/sys: bin sorry:3:4:m0130,m322:/bin: rhm Jxoi/5WRkeSf2:5:1:m0130,m322:/usr/guest: ken X.68wd1.ijayM:6:1:m0130,m322:/usr/guest: dmr C4u3dJWbg7RCk:7:1:mh1092,m069:/usr/guest/dmr: doug Ki71crWGxw/yM:8:1:m1660,m025:/usr/guest: bwk cI/xCTQIhLiIs:9:1:mh1548,m301:/usr/bwk: greg aP/aSvprvNzjs:10:1:m0130,m322:/usr/guest: tdk BpqFZxM1OM8fs:12:1:m0130,m322:/usr/tdk: ava 39pE5M497AxxA:15:1:m1357,m242:/usr/ava: scj y937pkRi0VkSQ:24:1:m5190,m292:/usr/guest: mel WdR3IjGmtatqE:26:1:m2019,m285,pounce,lesk:/usr/guest: agf X3yQDkiqWmPJg:34:1:m1699,m245:/usr/guest: llc Z/l25S2gaFn7U:41:1:m1650,m324:/usr/guest: lem JuvkSQUElv7mE:43:1:m0220,m157,l:/usr/guest: uucp sorry:48:1:mh2019,m285,nowitz:/usr/spool/uucp: nuucp vR1/qGT0tTmKY:48:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico duucp FvLWIgnf7/Yps:48:1:mh2019,m285,nowitz:/usr/spool/uucp: spm NeULgAzcCIE7Q:49:1:m1988,m322:/usr/guest: mb 5qmRMH553bNrQ:83:1:m5163,m207:/usr/guest: sif YExH0DpvsP6w6:91:1:m5192,m044:/usr/guest: dot cThsU.QsIRNgw:99:1:m5579,m048:/usr/guest: rje ti0JsP1n6fIMc:109:1:m5429,m096,jane:/usr/guest: vgl SUcT5i54Zr97M:112:1:m5579,m048:/usr/guest: jrv Gaov1FacwJWRk:114:1:m3887,m204:/usr/guest: nls 8lZyoosHv82sA:130:1:m4216,m050:/usr/guest: met C7iNv/YNUuK4Y:132:1:m6251,m322:/usr/guest: sue CWSau82zCx4TI:156:1:m2591,m148,2c576:/usr/guest: ravi rvJNlk5jwLXK6:167:1:m0000,m322:/usr/guest: pjw xNQy//GDa8FFg:170:1:m6534,m301:/usr/guest:/bin/csh jhc FueJau/xGh7TI:171:1::/usr/guest: lck DRw4p0msMLxDk:172:1:m6532,m149:/usr/guest: moh fWVEfxwIox8tc:213:1:m7842,m212,home:/usr/guest: cmb joVuRF4djg5C.:214:1:m1660,m025:/usr/guest: dave ABfXiO0cMc7r.:225:1:mh8451,m040:/usr/guest: mihalis mwZa8KXHRzkqE:230:1:m2019,m285:/usr/mihalis: tgs XRG6tBPcz0kq2:231:1:mh7461,m025:/usr/tgs:/usr/cvw/bin/sh uucpa Tqj9p7MbSckWM:238:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico bs fRwQb5d9OGKf6:251:1:m3887,m204:/usr/guest: wsb FAV9YYz8p9E7A:254:1:m2591,m148:/usr/guest: uucpb A3mRwDQ93/g6o:259:1:mh0000,m000:/usr/spool/uucppublic:/usr/lib/uucp/uucico cvw QyAYytOfVlwU6:266:1:mh1548,m301:/usr/cvw:/usr/cvw/bin/sh bsb 2ovW8RVTtCJnc:268:1:mh8092,m150:/usr/bsb: dsj UWawW3hN0sxAM:276:1:mh6784,m164:/usr/dsj: mrg s6Hg32FrhOATs:277:1:mh6784,m164:/usr/mrg: lwf FF27akAjJ5MOs:281:1:mh8085,mh102,lwf:/usr/guest: kam ze/k68Ms3dthg:287:1:m5579,m048:/usr/guest: ejs /cyBUkbW.D7uU:290:1:m0000,m000:/usr/guest: ark z/IgEAQYIBpOw:292:1:mh6947,m215,ark:/usr/ark: kfc 7W6ZdiDwb3kZc:303:1:m6581,m266:/usr/guest: rob xOkmkcOe3Nrgc:304:1:m0130,m322:/usr/guest: theo cscWu8sY7LXaM:307:1:m8417,m169:/usr/guest:/bin/sh djr 1Jk/Y729gZOS6:309:1:M7701,M097:/usr/guest: wmc 9IjUIKaH9J3BQ:312:1:mh8444,m050,wmco:/usr/guest: bart /jEdquTKW.ytM:313:1::/usr/guest:/bin/sh sally B/fSPToWep5DQ:314:1::/usr/guest:/bin/sh ehg kDDmV7EV6Rgb2:320:1:mh8732,m050,ehg:/usr/ehg: dds m7QmYNMtgj89g:324:1::/usr/dds: libr sorry:330:1::/usr/mel/books: dbm 7Ae8dDNmT00bI:334:1:m8896,m091:/usr/guest: srm w7t1dxime7v6E:362:1::/usr/srm:csh jkh e9fuiOFbFISOk:363:1::/usr/guest: aek IIioZy5hT7c4o:365:1::/usr/guest: tac wM4MxaujpUd5E:377:1:mh0000,m000:/usr/tac: jwg m0gyWvNpfv5mk:454:1:mh8632,m336:/usr/jwg: hania kUjpPUhNMmqs.:501:1::/usr/guest: jerq Dr3oM/S2pl2jY:502:1::/usr/jerq/wrap: kjs QVKFALdfgyCpw:503:1::/usr/tgs/kjs: jim DP6t0XVwlWOqw:632:1::/usr/guest: bwk1 seBQIwB6RQq9s:999:1:mh1548,m301:/usr/bwk: claire t6M0uDxCE7h7E:328:1:mh9323,m147:/usr/claire: egc xZX3RQm9R4w3.:297:1:m0000,m000:/usr/egc: root FnYk2ARoSqy5s:0:1:m0130,m322:/: daemon x:1:1:m0000,m000:/: sys sorry:2:2:m0130,m322:/usr/sys: bin sorry:3:4:m0130,m322:/bin: rhm Jxoi/5WRkeSf2:5:1:m0130,m322:/usr/guest: ken X.68wd1.ijayM:6:1:m0130,m322:/usr/guest: dmr C4u3dJWbg7RCk:7:1:mh1092,m069:/usr/guest/dmr: doug Ki71crWGxw/yM:8:1:m1660,m025:/usr/guest: bwk cI/xCTQIhLiIs:9:1:mh1548,m301:/usr/bwk: greg aP/aSvprvNzjs:10:1:m0130,m322:/usr/guest: tdk BpqFZxM1OM8fs:12:1:m0130,m322:/usr/tdk: ava 39pE5M497AxxA:15:1:m1357,m242:/usr/ava: scj y937pkRi0VkSQ:24:1:m5190,m292:/usr/guest: mel WdR3IjGmtatqE:26:1:m2019,m285,pounce,lesk:/usr/guest: agf X3yQDkiqWmPJg:34:1:m1699,m245:/usr/guest: llc Z/l25S2gaFn7U:41:1:m1650,m324:/usr/guest: lem JuvkSQUElv7mE:43:1:m0220,m157,l:/usr/guest: uucp sorry:48:1:mh2019,m285,nowitz:/usr/spool/uucp: nuucp vR1/qGT0tTmKY:48:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico duucp FvLWIgnf7/Yps:48:1:mh2019,m285,nowitz:/usr/spool/uucp: spm NeULgAzcCIE7Q:49:1:m1988,m322:/usr/guest: mb 5qmRMH553bNrQ:83:1:m5163,m207:/usr/guest: sif YExH0DpvsP6w6:91:1:m5192,m044:/usr/guest: dot cThsU.QsIRNgw:99:1:m5579,m048:/usr/guest: rje ti0JsP1n6fIMc:109:1:m5429,m096,jane:/usr/guest: vgl SUcT5i54Zr97M:112:1:m5579,m048:/usr/guest: jrv Gaov1FacwJWRk:114:1:m3887,m204:/usr/guest: nls 8lZyoosHv82sA:130:1:m4216,m050:/usr/guest: met C7iNv/YNUuK4Y:132:1:m6251,m322:/usr/guest: sue CWSau82zCx4TI:156:1:m2591,m148,2c576:/usr/guest: ravi rvJNlk5jwLXK6:167:1:m0000,m322:/usr/guest: pjw xNQy//GDa8FFg:170:1:m6534,m301:/usr/guest:/bin/csh jhcroot FnYk2ARoSqy5s 0 1 m0130,m322 / daemon x 1 1 m0000,m000 / sys sorry 2 2 m0130,m322 /usr/sys bin sorry 3 4 m0130,m322 /bin rhm Jxoi/5WRkeSf2 5 1 m0130,m322 /usr/guest ken X.68wd1.ijayM 6 1 m0130,m322 /usr/guest dmr C4u3dJWbg7RCk 7 1 mh1092,m069 /usr/guest/dmr doug Ki71crWGxw/yM 8 1 m1660,m025 /usr/guest bwk cI/xCTQIhLiIs 9 1 mh1548,m301 /usr/bwk greg aP/aSvprvNzjs 10 1 m0130,m322 /usr/guest tdk BpqFZxM1OM8fs 12 1 m0130,m322 /usr/tdk ava 39pE5M497AxxA 15 1 m1357,m242 /usr/ava scj y937pkRi0VkSQ 24 1 m5190,m292 /usr/guest mel WdR3IjGmtatqE 26 1 m2019,m285,pounce,lesk /usr/guest agf X3yQDkiqWmPJg 34 1 m1699,m245 /usr/guest llc Z/l25S2gaFn7U 41 1 m1650,m324 /usr/guest lem JuvkSQUElv7mE 43 1 m0220,m157,l /usr/guest uucp sorry 48 1 mh2019,m285,nowitz /usr/spool/uucp nuucp vR1/qGT0tTmKY 48 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico duucp FvLWIgnf7/Yps 48 1 mh2019,m285,nowitz /usr/spool/uucp spm NeULgAzcCIE7Q 49 1 m1988,m322 /usr/guest mb 5qmRMH553bNrQ 83 1 m5163,m207 /usr/guest sif YExH0DpvsP6w6 91 1 m5192,m044 /usr/guest dot cThsU.QsIRNgw 99 1 m5579,m048 /usr/guest rje ti0JsP1n6fIMc 109 1 m5429,m096,jane /usr/guest vgl SUcT5i54Zr97M 112 1 m5579,m048 /usr/guest jrv Gaov1FacwJWRk 114 1 m3887,m204 /usr/guest nls 8lZyoosHv82sA 130 1 m4216,m050 /usr/guest met C7iNv/YNUuK4Y 132 1 m6251,m322 /usr/guest sue CWSau82zCx4TI 156 1 m2591,m148,2c576 /usr/guest ravi rvJNlk5jwLXK6 167 1 m0000,m322 /usr/guest pjw xNQy//GDa8FFg 170 1 m6534,m301 /usr/guest /bin/csh jhc FueJau/xGh7TI 171 1 /usr/guest lck DRw4p0msMLxDk 172 1 m6532,m149 /usr/guest moh fWVEfxwIox8tc 213 1 m7842,m212,home /usr/guest cmb joVuRF4djg5C. 214 1 m1660,m025 /usr/guest dave ABfXiO0cMc7r. 225 1 mh8451,m040 /usr/guest mihalis mwZa8KXHRzkqE 230 1 m2019,m285 /usr/mihalis tgs XRG6tBPcz0kq2 231 1 mh7461,m025 /usr/tgs /usr/cvw/bin/sh uucpa Tqj9p7MbSckWM 238 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico bs fRwQb5d9OGKf6 251 1 m3887,m204 /usr/guest wsb FAV9YYz8p9E7A 254 1 m2591,m148 /usr/guest uucpb A3mRwDQ93/g6o 259 1 mh0000,m000 /usr/spool/uucppublic /usr/lib/uucp/uucico cvw QyAYytOfVlwU6 266 1 mh1548,m301 /usr/cvw /usr/cvw/bin/sh bsb 2ovW8RVTtCJnc 268 1 mh8092,m150 /usr/bsb dsj UWawW3hN0sxAM 276 1 mh6784,m164 /usr/dsj mrg s6Hg32FrhOATs 277 1 mh6784,m164 /usr/mrg lwf FF27akAjJ5MOs 281 1 mh8085,mh102,lwf /usr/guest kam ze/k68Ms3dthg 287 1 m5579,m048 /usr/guest ejs /cyBUkbW.D7uU 290 1 m0000,m000 /usr/guest ark z/IgEAQYIBpOw 292 1 mh6947,m215,ark /usr/ark kfc 7W6ZdiDwb3kZc 303 1 m6581,m266 /usr/guest rob xOkmkcOe3Nrgc 304 1 m0130,m322 /usr/guest theo cscWu8sY7LXaM 307 1 m8417,m169 /usr/guest /bin/sh djr 1Jk/Y729gZOS6 309 1 M7701,M097 /usr/guest wmc 9IjUIKaH9J3BQ 312 1 mh8444,m050,wmco /usr/guest bart /jEdquTKW.ytM 313 1 /usr/guest /bin/sh sally B/fSPToWep5DQ 314 1 /usr/guest /bin/sh ehg kDDmV7EV6Rgb2 320 1 mh8732,m050,ehg /usr/ehg dds m7QmYNMtgj89g 324 1 /usr/dds libr sorry 330 1 /usr/mel/books dbm 7Ae8dDNmT00bI 334 1 m8896,m091 /usr/guest srm w7t1dxime7v6E 362 1 /usr/srm csh jkh e9fuiOFbFISOk 363 1 /usr/guest aek IIioZy5hT7c4o 365 1 /usr/guest tac wM4MxaujpUd5E 377 1 mh0000,m000 /usr/tac jwg m0gyWvNpfv5mk 454 1 mh8632,m336 /usr/jwg hania kUjpPUhNMmqs. 501 1 /usr/guest jerq Dr3oM/S2pl2jY 502 1 /usr/jerq/wrap kjs QVKFALdfgyCpw 503 1 /usr/tgs/kjs jim DP6t0XVwlWOqw 632 1 /usr/guest bwk1 seBQIwB6RQq9s 999 1 mh1548,m301 /usr/bwk claire t6M0uDxCE7h7E 328 1 mh9323,m147 /usr/claire egc xZX3RQm9R4w3. 297 1 m0000,m000 /usr/egc root FnYk2ARoSqy5s 0 1 m0130,m322 / daemon x 1 1 m0000,m000 / sys sorry 2 2 m0130,m322 /usr/sys bin sorry 3 4 m0130,m322 /bin rhm Jxoi/5WRkeSf2 5 1 m0130,m322 /usr/guest ken X.68wd1.ijayM 6 1 m0130,m322 /usr/guest dmr C4u3dJWbg7RCk 7 1 mh1092,m069 /usr/guest/dmr doug Ki71crWGxw/yM 8 1 m1660,m025 /usr/guest bwk cI/xCTQIhLiIs 9 1 mh1548,m301 /usr/bwk greg aP/aSvprvNzjs 10 1 m0130,m322 /usr/guest tdk BpqFZxM1OM8fs 12 1 m0130,m322 /usr/tdk ava 39pE5M497AxxA 15 1 m1357,m242 /usr/ava scj y937pkRi0VkSQ 24 1 m5190,m292 /usr/guest mel WdR3IjGmtatqE 26 1 m2019,m285,pounce,lesk /usr/guest agf X3yQDkiqWmPJg 34 1 m1699,m245 /usr/guest llc Z/l25S2gaFn7U 41 1 m1650,m324 /usr/guest lem JuvkSQUElv7mE 43 1 m0220,m157,l /usr/guest uucp sorry 48 1 mh2019,m285,nowitz /usr/spool/uucp nuucp vR1/qGT0tTmKY 48 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico duucp FvLWIgnf7/Yps 48 1 mh2019,m285,nowitz /usr/spool/uucp spm NeULgAzcCIE7Q 49 1 m1988,m322 /usr/guest mb 5qmRMH553bNrQ 83 1 m5163,m207 /usr/guest sif YExH0DpvsP6w6 91 1 m5192,m044 /usr/guest dot cThsU.QsIRNgw 99 1 m5579,m048 /usr/guest rje ti0JsP1n6fIMc 109 1 m5429,m096,jane /usr/guest vgl SUcT5i54Zr97M 112 1 m5579,m048 /usr/guest jrv Gaov1FacwJWRk 114 1 m3887,m204 /usr/guest nls 8lZyoosHv82sA 130 1 m4216,m050 /usr/guest met C7iNv/YNUuK4Y 132 1 m6251,m322 /usr/guest sue CWSau82zCx4TI 156 1 m2591,m148,2c576 /usr/guest ravi rvJNlk5jwLXK6 167 1 m0000,m322 /usr/guest pjw xNQy//GDa8FFg 170 1 m6534,m301 /usr/guest /bin/csh jhc FueJau/xGh7TI 171 1 /usr/guest lck DRw4p0msMLxDk 172 1 m6532,m149 /usr/guest moh fWVEfxwIox8tc 213 1 m7842,m212,home /usr/guest cmb joVuRF4djg5C. 214 1 m1660,m025 /usr/guest dave ABfXiO0cMc7r. 225 1 mh8451,m040 /usr/guest mihalis mwZa8KXHRzkqE 230 1 m2019,m285 /usr/mihalis tgs XRG6tBPcz0kq2 231 1 mh7461,m025 /usr/tgs /usr/cvw/bin/sh uucpa Tqj9p7MbSckWM 238 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico bs fRwQb5d9OGKf6 251 1 m3887,m204 /usr/guest wsb FAV9YYz8p9E7A 254 1 m2591,m148 /usr/guest uucpb A3mRwDQ93/g6o 259 1 mh0000,m000 /usr/spool/uucppublic /usr/lib/uucp/uucico cvw QyAYytOfVlwU6 266 1 mh1548,m301 /usr/cvw /usr/cvw/bin/sh bsb 2ovW8RVTtCJnc 268 1 mh8092,m150 /usr/bsb dsj UWawW3hN0sxAM 276 1 mh6784,m164 /usr/dsj mrg s6Hg32FrhOATs 277 1 mh6784,m164 /usr/mrg lwf FF27akAjJ5MOs 281 1 mh8085,mh102,lwf /usr/guest kam ze/k68Ms3dthg 287 1 m5579,m048 /usr/guest ejs /cyBUkbW.D7uU 290 1 m0000,m000 /usr/guest ark z/IgEAQYIBpOw 292 1 mh6947,m215,ark /usr/ark kfc 7W6ZdiDwb3kZc 303 1 m6581,m266 /usr/guest rob xOkmkcOe3Nrgc 304 1 m0130,m322 /usr/guest theo cscWu8sY7LXaM 307 1 m8417,m169 /usr/guest /bin/sh djr 1Jk/Y729gZOS6 309 1 M7701,M097 /usr/guest wmc 9IjUIKaH9J3BQ 312 1 mh8444,m050,wmco /usr/guest bart /jEdquTKW.ytM 313 1 /usr/guest /bin/sh sally B/fSPToWep5DQ 314 1 /usr/guest /bin/sh ehg kDDmV7EV6Rgb2 320 1 mh8732,m050,ehg /usr/ehg dds m7QmYNMtgj89g 324 1 /usr/dds libr sorry 330 1 /usr/mel/books dbm 7Ae8dDNmT00bI 334 1 m8896,m091 /usr/guest srm w7t1dxime7v6E 362 1 /usr/srm csh jkh e9fuiOFbFISOk 363 1 /usr/guest aek IIioZy5hT7c4o 365 1 /usr/guest tac wM4MxaujpUd5E 377 1 mh0000,m000 /usr/tac jwg m0gyWvNpfv5mk 454 1 mh8632,m336 /usr/jwg hania kUjpPUhNMmqs. 501 1 /usr/guest jerq Dr3oM/S2pl2jY 502 1 /usr/jerq/wrap kjs QVKFALdfgyCpw 503 1 /usr/tgs/kjs jim DP6t0XVwlWOqw 632 1 /usr/guest bwk1 seBQIwB6RQq9s 999 1 mh1548,m301 /usr/bwk claire t6M0uDxCE7h7E 328 1 mh9323,m147 /usr/claire egc xZX3RQm9R4w3. 297 1 m0000,m000 /usr/egc root FnYk2ARoSqy5s 0 1 m0130,m322 / daemon x 1 1 m0000,m000 / sys sorry 2 2 m0130,m322 /usr/sys bin sorry 3 4 m0130,m322 /bin rhm Jxoi/5WRkeSf2 5 1 m0130,m322 /usr/guest ken X.68wd1.ijayM 6 1 m0130,m322 /usr/guest dmr C4u3dJWbg7RCk 7 1 mh1092,m069 /usr/guest/dmr doug Ki71crWGxw/yM 8 1 m1660,m025 /usr/guest bwk cI/xCTQIhLiIs 9 1 mh1548,m301 /usr/bwk greg aP/aSvprvNzjs 10 1 m0130,m322 /usr/guest tdk BpqFZxM1OM8fs 12 1 m0130,m322 /usr/tdk ava 39pE5M497AxxA 15 1 m1357,m242 /usr/ava scj y937pkRi0VkSQ 24 1 m5190,m292 /usr/guest mel WdR3IjGmtatqE 26 1 m2019,m285,pounce,lesk /usr/guest agf X3yQDkiqWmPJg 34 1 m1699,m245 /usr/guest llc Z/l25S2gaFn7U 41 1 m1650,m324 /usr/guest lem JuvkSQUElv7mE 43 1 m0220,m157,l /usr/guest uucp sorry 48 1 mh2019,m285,nowitz /usr/spool/uucp nuucp vR1/qGT0tTmKY 48 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico duucp FvLWIgnf7/Yps 48 1 mh2019,m285,nowitz /usr/spool/uucp spm NeULgAzcCIE7Q 49 1 m1988,m322 /usr/guest mb 5qmRMH553bNrQ 83 1 m5163,m207 /usr/guest sif YExH0DpvsP6w6 91 1 m5192,m044 /usr/guest dot cThsU.QsIRNgw 99 1 m5579,m048 /usr/guest rje ti0JsP1n6fIMc 109 1 m5429,m096,jane /usr/guest vgl SUcT5i54Zr97M 112 1 m5579,m048 /usr/guest jrv Gaov1FacwJWRk 114 1 m3887,m204 /usr/guest nls 8lZyoosHv82sA 130 1 m4216,m050 /usr/guest met C7iNv/YNUuK4Y 132 1 m6251,m322 /usr/guest sue CWSau82zCx4TI 156 1 m2591,m148,2c576 /usr/guest ravi rvJNlk5jwLXK6 167 1 m0000,m322 /usr/guest pjw xNQy//GDa8FFg 170 1 m6534,m301 /usr/guest /bin/csh jhc FueJau/xGh7TI 171 1 /usr/guest lck DRw4p0msMLxDk 172 1 m6532,m149 /usr/guest moh fWVEfxwIox8tc 213 1 m7842,m212,home /usr/guest cmb joVuRF4djg5C. 214 1 m1660,m025 /usr/guest dave ABfXiO0cMc7r. 225 1 mh8451,m040 /usr/guest mihalis mwZa8KXHRzkqE 230 1 m2019,m285 /usr/mihalis tgs XRG6tBPcz0kq2 231 1 mh7461,m025 /usr/tgs /usr/cvw/bin/sh uucpa Tqj9p7MbSckWM 238 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico bs fRwQb5d9OGKf6 251 1 m3887,m204 /usr/guest wsb FAV9YYz8p9E7A 254 1 m2591,m148 /usr/guest uucpb A3mRwDQ93/g6o 259 1 mh0000,m000 /usr/spool/uucppublic /usr/lib/uucp/uucico cvw QyAYytOfVlwU6 266 1 mh1548,m301 /usr/cvw /usr/cvw/bin/sh bsb 2ovW8RVTtCJnc 268 1 mh8092,m150 /usr/bsb dsj UWawW3hN0sxAM 276 1 mh6784,m164 /usr/dsj mrg s6Hg32FrhOATs 277 1 mh6784,m164 /usr/mrg lwf FF27akAjJ5MOs 281 1 mh8085,mh102,lwf /usr/guest kam ze/k68Ms3dthg 287 1 m5579,m048 /usr/guest ejs /cyBUkbW.D7uU 290 1 m0000,m000 /usr/guest ark z/IgEAQYIBpOw 292 1 mh6947,m215,ark /usr/ark kfc 7W6ZdiDwb3kZc 303 1 m6581,m266 /usr/guest rob xOkmkcOe3Nrgc 304 1 m0130,m322 /usr/guest theo cscWu8sY7LXaM 307 1 m8417,m169 /usr/guest /bin/sh djr 1Jk/Y729gZOS6 309 1 M7701,M097 /usr/guest wmc 9IjUIKaH9J3BQ 312 1 mh8444,m050,wmco /usr/guest bart /jEdquTKW.ytM 313 1 /usr/guest /bin/sh sally B/fSPToWep5DQ 314 1 /usr/guest /bin/sh ehg kDDmV7EV6Rgb2 320 1 mh8732,m050,ehg /usr/ehg dds m7QmYNMtgj89g 324 1 /usr/dds libr sorry 330 1 /usr/mel/books dbm 7Ae8dDNmT00bI 334 1 m8896,m091 /usr/guest srm w7t1dxime7v6E 362 1 /usr/srm csh jkh e9fuiOFbFISOk 363 1 /usr/guest aek IIioZy5hT7c4o 365 1 /usr/guest tac wM4MxaujpUd5E 377 1 mh0000,m000 /usr/tac jwg m0gyWvNpfv5mk 454 1 mh8632,m336 /usr/jwg hania kUjpPUhNMmqs. 501 1 /usr/guest jerq Dr3oM/S2pl2jY 502 1 /usr/jerq/wrap kjs QVKFALdfgyCpw 503 1 /usr/tgs/kjs jim DP6t0XVwlWOqw 632 1 /usr/guest bwk1 seBQIwB6RQq9s 999 1 mh1548,m301 /usr/bwk claire t6M0uDxCE7h7E 328 1 mh9323,m147 /usr/claire egc xZX3RQm9R4w3. 297 1 m0000,m000 /usr/egc root FnYk2ARoSqy5s 0 1 m0130,m322 / daemon x 1 1 m0000,m000 / sys sorry 2 2 m0130,m322 /usr/sys bin sorry 3 4 m0130,m322 /bin rhm Jxoi/5WRkeSf2 5 1 m0130,m322 /usr/guest ken X.68wd1.ijayM 6 1 m0130,m322 /usr/guest dmr C4u3dJWbg7RCk 7 1 mh1092,m069 /usr/guest/dmr doug Ki71crWGxw/yM 8 1 m1660,m025 /usr/guest bwk cI/xCTQIhLiIs 9 1 mh1548,m301 /usr/bwk greg aP/aSvprvNzjs 10 1 m0130,m322 /usr/guest tdk BpqFZxM1OM8fs 12 1 m0130,m322 /usr/tdk ava 39pE5M497AxxA 15 1 m1357,m242 /usr/ava scj y937pkRi0VkSQ 24 1 m5190,m292 /usr/guest mel WdR3IjGmtatqE 26 1 m2019,m285,pounce,lesk /usr/guest agf X3yQDkiqWmPJg 34 1 m1699,m245 /usr/guest llc Z/l25S2gaFn7U 41 1 m1650,m324 /usr/guest lem JuvkSQUElv7mE 43 1 m0220,m157,l /usr/guest uucp sorry 48 1 mh2019,m285,nowitz /usr/spool/uucp nuucp vR1/qGT0tTmKY 48 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico duucp FvLWIgnf7/Yps 48 1 mh2019,m285,nowitz /usr/spool/uucp spm NeULgAzcCIE7Q 49 1 m1988,m322 /usr/guest mb 5qmRMH553bNrQ 83 1 m5163,m207 /usr/guest sif YExH0DpvsP6w6 91 1 m5192,m044 /usr/guest dot cThsU.QsIRNgw 99 1 m5579,m048 /usr/guest rje ti0JsP1n6fIMc 109 1 m5429,m096,jane /usr/guest vgl SUcT5i54Zr97M 112 1 m5579,m048 /usr/guest jrv Gaov1FacwJWRk 114 1 m3887,m204 /usr/guest nls 8lZyoosHv82sA 130 1 m4216,m050 /usr/guest met C7iNv/YNUuK4Y 132 1 m6251,m322 /usr/guest sue CWSau82zCx4TI 156 1 m2591,m148,2c576 /usr/guest ravi rvJNlk5jwLXK6 167 1 m0000,m322 /usr/guest pjw xNQy//GDa8FFg 170 1 m6534,m301 /usr/guest /bin/csh jhc FueJau/xGh7TI 171 1 /usr/guest lck DRw4p0msMLxDk 172 1 m6532,m149 /usr/guest moh fWVEfxwIox8tc 213 1 m7842,m212,home /usr/guest cmb joVuRF4djg5C. 214 1 m1660,m025 /usr/guest dave ABfXiO0cMc7r. 225 1 mh8451,m040 /usr/guest mihalis mwZa8KXHRzkqE 230 1 m2019,m285 /usr/mihalis tgs XRG6tBPcz0kq2 231 1 mh7461,m025 /usr/tgs /usr/cvw/bin/sh uucpa Tqj9p7MbSckWM 238 1 mh2019,m285,uucp /usr/spool/uucppublic /usr/lib/uucp/uucico bs fRwQb5d9OGKf6 251 1 m3887,m204 /usr/guest wsb FAV9YYz8p9E7A 254 1 m2591,m148 /usr/guest uucpb A3mRwDQ93/g6o 259 1 mh0000,m000 /usr/spool/uucppublic /usr/lib/uucp/uucico cvw QyAYytOfVlwU6 266 1 mh1548,m301 /usr/cvw /usr/cvw/bin/sh bsb 2ovW8RVTtCJnc 268 1 mh8092,m150 /usr/bsb dsj UWawW3hN0sxAM 276 1 mh6784,m164 /usr/dsj mrg s6Hg32FrhOATs 277 1 mh6784,m164 /usr/mrg lwf FF27akAjJ5MOs 281 1 mh8085,mh102,lwf /usr/guest kam ze/k68Ms3dthg 287 1 m5579,m048 /usr/guest ejs /cyBUkbW.D7uU 290 1 m0000,m000 /usr/guest ark z/IgEAQYIBpOw:292:1:mh6947,m215,ark:/usr/ark: kfc 7W6ZdiDwb3kZc:303:1:m6581,m266:/usr/guest: rob xOkmkcOe3Nrgc:304:1:m0130,m322:/usr/guest: theo cscWu8sY7LXaM:307:1:m8417,m169:/usr/guest:/bin/sh djr 1Jk/Y729gZOS6:309:1:M7701,M097:/usr/guest: wmc 9IjUIKaH9J3BQ:312:1:mh8444,m050,wmco:/usr/guest: bart /jEdquTKW.ytM:313:1::/usr/guest:/bin/sh sally B/fSPToWep5DQ:314:1::/usr/guest:/bin/sh ehg kDDmV7EV6Rgb2:320:1:mh8732,m050,ehg:/usr/ehg: dds m7QmYNMtgj89g:324:1::/usr/dds: libr sorry:330:1::/usr/mel/books: dbm 7Ae8dDNmT00bI:334:1:m8896,m091:/usr/guest: srm w7t1dxime7v6E:362:1::/usr/srm:csh jkh e9fuiOFbFISOk:363:1::/usr/guest: aek IIioZy5hT7c4o:365:1::/usr/guest: tac wM4MxaujpUd5E:377:1:mh0000,m000:/usr/tac: jwg m0gyWvNpfv5mk:454:1:mh8632,m336:/usr/jwg: hania kUjpPUhNMmqs.:501:1::/usr/guest: jerq Dr3oM/S2pl2jY:502:1::/usr/jerq/wrap: kjs QVKFALdfgyCpw:503:1::/usr/tgs/kjs: jim DP6t0XVwlWOqw:632:1::/usr/guest: bwk1 seBQIwB6RQq9s:999:1:mh1548,m301:/usr/bwk: claire t6M0uDxCE7h7E:328:1:mh9323,m147:/usr/claire: egc xZX3RQm9R4w3.:297:1:m0000,m000:/usr/egc: root FnYk2ARoSqy5s:0:1:m0130,m322:/: daemon x:1:1:m0000,m000:/: sys sorry:2:2:m0130,m322:/usr/sys: bin sorry:3:4:m0130,m322:/bin: rhm Jxoi/5WRkeSf2:5:1:m0130,m322:/usr/guest: ken X.68wd1.ijayM:6:1:m0130,m322:/usr/guest: dmr C4u3dJWbg7RCk:7:1:mh1092,m069:/usr/guest/dmr: doug Ki71crWGxw/yM:8:1:m1660,m025:/usr/guest: bwk cI/xCTQIhLiIs:9:1:mh1548,m301:/usr/bwk: greg aP/aSvprvNzjs:10:1:m0130,m322:/usr/guest: tdk BpqFZxM1OM8fs:12:1:m0130,m322:/usr/tdk: ava 39pE5M497AxxA:15:1:m1357,m242:/usr/ava: scj y937pkRi0VkSQ:24:1:m5190,m292:/usr/guest: mel WdR3IjGmtatqE:26:1:m2019,m285,pounce,lesk:/usr/guest: agf X3yQDkiqWmPJg:34:1:m1699,m245:/usr/guest: llc Z/l25S2gaFn7U:41:1:m1650,m324:/usr/guest: lem JuvkSQUElv7mE:43:1:m0220,m157,l:/usr/guest: uucp sorry:48:1:mh2019,m285,nowitz:/usr/spool/uucp: nuucp vR1/qGT0tTmKY:48:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico duucp FvLWIgnf7/Yps:48:1:mh2019,m285,nowitz:/usr/spool/uucp: spm NeULgAzcCIE7Q:49:1:m1988,m322:/usr/guest: mb 5qmRMH553bNrQ:83:1:m5163,m207:/usr/guest: sif YExH0DpvsP6w6:91:1:m5192,m044:/usr/guest: dot cThsU.QsIRNgw:99:1:m5579,m048:/usr/guest: rje ti0JsP1n6fIMc:109:1:m5429,m096,jane:/usr/guest: vgl SUcT5i54Zr97M:112:1:m5579,m048:/usr/guest: jrv Gaov1FacwJWRk:114:1:m3887,m204:/usr/guest: nls 8lZyoosHv82sA:130:1:m4216,m050:/usr/guest: met C7iNv/YNUuK4Y:132:1:m6251,m322:/usr/guest: sue CWSau82zCx4TI:156:1:m2591,m148,2c576:/usr/guest: ravi rvJNlk5jwLXK6:167:1:m0000,m322:/usr/guest: pjw xNQy//GDa8FFg:170:1:m6534,m301:/usr/guest:/bin/csh jhc FueJau/xGh7TI:171:1::/usr/guest: lck DRw4p0msMLxDk:172:1:m6532,m149:/usr/guest: moh fWVEfxwIox8tc:213:1:m7842,m212,home:/usr/guest: cmb joVuRF4djg5C.:214:1:m1660,m025:/usr/guest: dave ABfXiO0cMc7r.:225:1:mh8451,m040:/usr/guest: mihalis mwZa8KXHRzkqE:230:1:m2019,m285:/usr/mihalis: tgs XRG6tBPcz0kq2:231:1:mh7461,m025:/usr/tgs:/usr/cvw/bin/sh uucpa Tqj9p7MbSckWM:238:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico bs fRwQb5d9OGKf6:251:1:m3887,m204:/usr/guest: wsb FAV9YYz8p9E7A:254:1:m2591,m148:/usr/guest: uucpb A3mRwDQ93/g6o:259:1:mh0000,m000:/usr/spool/uucppublic:/usr/lib/uucp/uucico cvw QyAYytOfVlwU6:266:1:mh1548,m301:/usr/cvw:/usr/cvw/bin/sh bsb 2ovW8RVTtCJnc:268:1:mh8092,m150:/usr/bsb: dsj UWawW3hN0sxAM:276:1:mh6784,m164:/usr/dsj: mrg s6Hg32FrhOATs:277:1:mh6784,m164:/usr/mrg: lwf FF27akAjJ5MOs:281:1:mh8085,mh102,lwf:/usr/guest: kam ze/k68Ms3dthg:287:1:m5579,m048:/usr/guest: ejs /cyBUkbW.D7uU:290:1:m0000,m000:/usr/guest: ark z/IgEAQYIBpOw:292:1:mh6947,m215,ark:/usr/ark: kfc 7W6ZdiDwb3kZc:303:1:m6581,m266:/usr/guest: rob xOkmkcOe3Nrgc:304:1:m0130,m322:/usr/guest: theo cscWu8sY7LXaM:307:1:m8417,m169:/usr/guest:/bin/sh djr 1Jk/Y729gZOS6:309:1:M7701,M097:/usr/guest: wmc 9IjUIKaH9J3BQ:312:1:mh8444,m050,wmco:/usr/guest: bart /jEdquTKW.ytM:313:1::/usr/guest:/bin/sh sally B/fSPToWep5DQ:314:1::/usr/guest:/bin/sh ehg kDDmV7EV6Rgb2:320:1:mh8732,m050,ehg:/usr/ehg: dds m7QmYNMtgj89g:324:1::/usr/dds: libr sorry:330:1::/usr/mel/books: dbm 7Ae8dDNmT00bI:334:1:m8896,m091:/usr/guest: srm w7t1dxime7v6E:362:1::/usr/srm:csh jkh e9fuiOFbFISOk:363:1::/usr/guest: aek IIioZy5hT7c4o:365:1::/usr/guest: tac wM4MxaujpUd5E:377:1:mh0000,m000:/usr/tac: jwg m0gyWvNpfv5mk:454:1:mh8632,m336:/usr/jwg: hania kUjpPUhNMmqs.:501:1::/usr/guest: jerq Dr3oM/S2pl2jY:502:1::/usr/jerq/wrap: kjs QVKFALdfgyCpw:503:1::/usr/tgs/kjs: jim DP6t0XVwlWOqw:632:1::/usr/guest: bwk1 seBQIwB6RQq9s:999:1:mh1548,m301:/usr/bwk: claire t6M0uDxCE7h7E:328:1:mh9323,m147:/usr/claire: egc xZX3RQm9R4w3.:297:1:m0000,m000:/usr/egc: root FnYk2ARoSqy5s:0:1:m0130,m322:/: daemon x:1:1:m0000,m000:/: sys sorry:2:2:m0130,m322:/usr/sys: bin sorry:3:4:m0130,m322:/bin: rhm Jxoi/5WRkeSf2:5:1:m0130,m322:/usr/guest: ken X.68wd1.ijayM:6:1:m0130,m322:/usr/guest: dmr C4u3dJWbg7RCk:7:1:mh1092,m069:/usr/guest/dmr: doug Ki71crWGxw/yM:8:1:m1660,m025:/usr/guest: bwk cI/xCTQIhLiIs:9:1:mh1548,m301:/usr/bwk: greg aP/aSvprvNzjs:10:1:m0130,m322:/usr/guest: tdk BpqFZxM1OM8fs:12:1:m0130,m322:/usr/tdk: ava 39pE5M497AxxA:15:1:m1357,m242:/usr/ava: scj y937pkRi0VkSQ:24:1:m5190,m292:/usr/guest: mel WdR3IjGmtatqE:26:1:m2019,m285,pounce,lesk:/usr/guest: agf X3yQDkiqWmPJg:34:1:m1699,m245:/usr/guest: llc Z/l25S2gaFn7U:41:1:m1650,m324:/usr/guest: lem JuvkSQUElv7mE:43:1:m0220,m157,l:/usr/guest: uucp sorry:48:1:mh2019,m285,nowitz:/usr/spool/uucp: nuucp vR1/qGT0tTmKY:48:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico duucp FvLWIgnf7/Yps:48:1:mh2019,m285,nowitz:/usr/spool/uucp: spm NeULgAzcCIE7Q:49:1:m1988,m322:/usr/guest: mb 5qmRMH553bNrQ:83:1:m5163,m207:/usr/guest: sif YExH0DpvsP6w6:91:1:m5192,m044:/usr/guest: dot cThsU.QsIRNgw:99:1:m5579,m048:/usr/guest: rje ti0JsP1n6fIMc:109:1:m5429,m096,jane:/usr/guest: vgl SUcT5i54Zr97M:112:1:m5579,m048:/usr/guest: jrv Gaov1FacwJWRk:114:1:m3887,m204:/usr/guest: nls 8lZyoosHv82sA:130:1:m4216,m050:/usr/guest: met C7iNv/YNUuK4Y:132:1:m6251,m322:/usr/guest: sue CWSau82zCx4TI:156:1:m2591,m148,2c576:/usr/guest: ravi rvJNlk5jwLXK6:167:1:m0000,m322:/usr/guest: pjw xNQy//GDa8FFg:170:1:m6534,m301:/usr/guest:/bin/csh jhc FueJau/xGh7TI:171:1::/usr/guest: lck DRw4p0msMLxDk:172:1:m6532,m149:/usr/guest: moh fWVEfxwIox8tc:213:1:m7842,m212,home:/usr/guest: cmb joVuRF4djg5C.:214:1:m1660,m025:/usr/guest: dave ABfXiO0cMc7r.:225:1:mh8451,m040:/usr/guest: mihalis mwZa8KXHRzkqE:230:1:m2019,m285:/usr/mihalis: tgs XRG6tBPcz0kq2:231:1:mh7461,m025:/usr/tgs:/usr/cvw/bin/sh uucpa Tqj9p7MbSckWM:238:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico bs fRwQb5d9OGKf6:251:1:m3887,m204:/usr/guest: wsb FAV9YYz8p9E7A:254:1:m2591,m148:/usr/guest: uucpb A3mRwDQ93/g6o:259:1:mh0000,m000:/usr/spool/uucppublic:/usr/lib/uucp/uucico cvw QyAYytOfVlwU6:266:1:mh1548,m301:/usr/cvw:/usr/cvw/bin/sh bsb 2ovW8RVTtCJnc:268:1:mh8092,m150:/usr/bsb: dsj UWawW3hN0sxAM:276:1:mh6784,m164:/usr/dsj: mrg s6Hg32FrhOATs:277:1:mh6784,m164:/usr/mrg: lwf FF27akAjJ5MOs:281:1:mh8085,mh102,lwf:/usr/guest: kam ze/k68Ms3dthg:287:1:m5579,m048:/usr/guest: ejs /cyBUkbW.D7uU:290:1:m0000,m000:/usr/guest: ark z/IgEAQYIBpOw:292:1:mh6947,m215,ark:/usr/ark: kfc 7W6ZdiDwb3kZc:303:1:m6581,m266:/usr/guest: rob xOkmkcOe3Nrgc:304:1:m0130,m322:/usr/guest: theo cscWu8sY7LXaM:307:1:m8417,m169:/usr/guest:/bin/sh djr 1Jk/Y729gZOS6:309:1:M7701,M097:/usr/guest: wmc 9IjUIKaH9J3BQ:312:1:mh8444,m050,wmco:/usr/guest: bart /jEdquTKW.ytM:313:1::/usr/guest:/bin/sh sally B/fSPToWep5DQ:314:1::/usr/guest:/bin/sh ehg kDDmV7EV6Rgb2:320:1:mh8732,m050,ehg:/usr/ehg: dds m7QmYNMtgj89g:324:1::/usr/dds: libr sorry:330:1::/usr/mel/books: dbm 7Ae8dDNmT00bI:334:1:m8896,m091:/usr/guest: srm w7t1dxime7v6E:362:1::/usr/srm:csh jkh e9fuiOFbFISOk:363:1::/usr/guest: aek IIioZy5hT7c4o:365:1::/usr/guest: tac wM4MxaujpUd5E:377:1:mh0000,m000:/usr/tac: jwg m0gyWvNpfv5mk:454:1:mh8632,m336:/usr/jwg: hania kUjpPUhNMmqs.:501:1::/usr/guest: jerq Dr3oM/S2pl2jY:502:1::/usr/jerq/wrap: kjs QVKFALdfgyCpw:503:1::/usr/tgs/kjs: jim DP6t0XVwlWOqw:632:1::/usr/guest: bwk1 seBQIwB6RQq9s:999:1:mh1548,m301:/usr/bwk: claire t6M0uDxCE7h7E:328:1:mh9323,m147:/usr/claire: egc xZX3RQm9R4w3.:297:1:m0000,m000:/usr/egc: root FnYk2ARoSqy5s:0:1:m0130,m322:/: daemon x:1:1:m0000,m000:/: sys sorry:2:2:m0130,m322:/usr/sys: bin sorry:3:4:m0130,m322:/bin: rhm Jxoi/5WRkeSf2:5:1:m0130,m322:/usr/guest: ken X.68wd1.ijayM:6:1:m0130,m322:/usr/guest: dmr C4u3dJWbg7RCk:7:1:mh1092,m069:/usr/guest/dmr: doug Ki71crWGxw/yM:8:1:m1660,m025:/usr/guest: bwk cI/xCTQIhLiIs:9:1:mh1548,m301:/usr/bwk: greg aP/aSvprvNzjs:10:1:m0130,m322:/usr/guest: tdk BpqFZxM1OM8fs:12:1:m0130,m322:/usr/tdk: ava 39pE5M497AxxA:15:1:m1357,m242:/usr/ava: scj y937pkRi0VkSQ:24:1:m5190,m292:/usr/guest: mel WdR3IjGmtatqE:26:1:m2019,m285,pounce,lesk:/usr/guest: agf X3yQDkiqWmPJg:34:1:m1699,m245:/usr/guest: llc Z/l25S2gaFn7U:41:1:m1650,m324:/usr/guest: lem JuvkSQUElv7mE:43:1:m0220,m157,l:/usr/guest: uucp sorry:48:1:mh2019,m285,nowitz:/usr/spool/uucp: nuucp vR1/qGT0tTmKY:48:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico duucp FvLWIgnf7/Yps:48:1:mh2019,m285,nowitz:/usr/spool/uucp: spm NeULgAzcCIE7Q:49:1:m1988,m322:/usr/guest: mb 5qmRMH553bNrQ:83:1:m5163,m207:/usr/guest: sif YExH0DpvsP6w6:91:1:m5192,m044:/usr/guest: dot cThsU.QsIRNgw:99:1:m5579,m048:/usr/guest: rje ti0JsP1n6fIMc:109:1:m5429,m096,jane:/usr/guest: vgl SUcT5i54Zr97M:112:1:m5579,m048:/usr/guest: jrv Gaov1FacwJWRk:114:1:m3887,m204:/usr/guest: nls 8lZyoosHv82sA:130:1:m4216,m050:/usr/guest: met C7iNv/YNUuK4Y:132:1:m6251,m322:/usr/guest: sue CWSau82zCx4TI:156:1:m2591,m148,2c576:/usr/guest: ravi rvJNlk5jwLXK6:167:1:m0000,m322:/usr/guest: pjw xNQy//GDa8FFg:170:1:m6534,m301:/usr/guest:/bin/csh jhc FueJau/xGh7TI:171:1::/usr/guest: lck DRw4p0msMLxDk:172:1:m6532,m149:/usr/guest: moh fWVEfxwIox8tc:213:1:m7842,m212,home:/usr/guest: cmb joVuRF4djg5C.:214:1:m1660,m025:/usr/guest: dave ABfXiO0cMc7r.:225:1:mh8451,m040:/usr/guest: mihalis mwZa8KXHRzkqE:230:1:m2019,m285:/usr/mihalis: tgs XRG6tBPcz0kq2:231:1:mh7461,m025:/usr/tgs:/usr/cvw/bin/sh uucpa Tqj9p7MbSckWM:238:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico bs fRwQb5d9OGKf6:251:1:m3887,m204:/usr/guest: wsb FAV9YYz8p9E7A:254:1:m2591,m148:/usr/guest: uucpb A3mRwDQ93/g6o:259:1:mh0000,m000:/usr/spool/uucppublic:/usr/lib/uucp/uucico cvw QyAYytOfVlwU6:266:1:mh1548,m301:/usr/cvw:/usr/cvw/bin/sh bsb 2ovW8RVTtCJnc:268:1:mh8092,m150:/usr/bsb: dsj UWawW3hN0sxAM:276:1:mh6784,m164:/usr/dsj: mrg s6Hg32FrhOATs:277:1:mh6784,m164:/usr/mrg: lwf FF27akAjJ5MOs:281:1:mh8085,mh102,lwf:/usr/guest: kam ze/k68Ms3dthg:287:1:m5579,m048:/usr/guest: ejs /cyBUkbW.D7uU:290:1:m0000,m000:/usr/guest: ark z/IgEAQYIBpOw:292:1:mh6947,m215,ark:/usr/ark: kfc 7W6ZdiDwb3kZc:303:1:m6581,m266:/usr/guest: rob xOkmkcOe3Nrgc:304:1:m0130,m322:/usr/guest: theo cscWu8sY7LXaM:307:1:m8417,m169:/usr/guest:/bin/sh djr 1Jk/Y729gZOS6:309:1:M7701,M097:/usr/guest: wmc 9IjUIKaH9J3BQ:312:1:mh8444,m050,wmco:/usr/guest: bart /jEdquTKW.ytM:313:1::/usr/guest:/bin/sh sally B/fSPToWep5DQ:314:1::/usr/guest:/bin/sh ehg kDDmV7EV6Rgb2:320:1:mh8732,m050,ehg:/usr/ehg: dds m7QmYNMtgj89g:324:1::/usr/dds: libr sorry:330:1::/usr/mel/books: dbm 7Ae8dDNmT00bI:334:1:m8896,m091:/usr/guest: srm w7t1dxime7v6E:362:1::/usr/srm:csh jkh e9fuiOFbFISOk:363:1::/usr/guest: aek IIioZy5hT7c4o:365:1::/usr/guest: tac wM4MxaujpUd5E:377:1:mh0000,m000:/usr/tac: jwg m0gyWvNpfv5mk:454:1:mh8632,m336:/usr/jwg: hania kUjpPUhNMmqs.:501:1::/usr/guest: jerq Dr3oM/S2pl2jY:502:1::/usr/jerq/wrap: kjs QVKFALdfgyCpw:503:1::/usr/tgs/kjs: jim DP6t0XVwlWOqw:632:1::/usr/guest: bwk1 seBQIwB6RQq9s:999:1:mh1548,m301:/usr/bwk: claire t6M0uDxCE7h7E:328:1:mh9323,m147:/usr/claire: egc xZX3RQm9R4w3.:297:1:m0000,m000:/usr/egc: root FnYk2ARoSqy5s:0:1:m0130,m322:/: daemon x:1:1:m0000,m000:/: sys sorry:2:2:m0130,m322:/usr/sys: bin sorry:3:4:m0130,m322:/bin: rhm Jxoi/5WRkeSf2:5:1:m0130,m322:/usr/guest: ken X.68wd1.ijayM:6:1:m0130,m322:/usr/guest: dmr C4u3dJWbg7RCk:7:1:mh1092,m069:/usr/guest/dmr: doug Ki71crWGxw/yM:8:1:m1660,m025:/usr/guest: bwk cI/xCTQIhLiIs:9:1:mh1548,m301:/usr/bwk: greg aP/aSvprvNzjs:10:1:m0130,m322:/usr/guest: tdk BpqFZxM1OM8fs:12:1:m0130,m322:/usr/tdk: ava 39pE5M497AxxA:15:1:m1357,m242:/usr/ava: scj y937pkRi0VkSQ:24:1:m5190,m292:/usr/guest: mel WdR3IjGmtatqE:26:1:m2019,m285,pounce,lesk:/usr/guest: agf X3yQDkiqWmPJg:34:1:m1699,m245:/usr/guest: llc Z/l25S2gaFn7U:41:1:m1650,m324:/usr/guest: lem JuvkSQUElv7mE:43:1:m0220,m157,l:/usr/guest: uucp sorry:48:1:mh2019,m285,nowitz:/usr/spool/uucp: nuucp vR1/qGT0tTmKY:48:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico duucp FvLWIgnf7/Yps:48:1:mh2019,m285,nowitz:/usr/spool/uucp: spm NeULgAzcCIE7Q:49:1:m1988,m322:/usr/guest: mb 5qmRMH553bNrQ:83:1:m5163,m207:/usr/guest: sif YExH0DpvsP6w6:91:1:m5192,m044:/usr/guest: dot cThsU.QsIRNgw:99:1:m5579,m048:/usr/guest: rje ti0JsP1n6fIMc:109:1:m5429,m096,jane:/usr/guest: vgl SUcT5i54Zr97M:112:1:m5579,m048:/usr/guest: jrv Gaov1FacwJWRk:114:1:m3887,m204:/usr/guest: nls 8lZyoosHv82sA:130:1:m4216,m050:/usr/guest: met C7iNv/YNUuK4Y:132:1:m6251,m322:/usr/guest: sue CWSau82zCx4TI:156:1:m2591,m148,2c576:/usr/guest: ravi rvJNlk5jwLXK6:167:1:m0000,m322:/usr/guest: pjw xNQy//GDa8FFg:170:1:m6534,m301:/usr/guest:/bin/csh jhc FueJau/xGh7TI:171:1::/usr/guest: lck DRw4p0msMLxDk:172:1:m6532,m149:/usr/guest: moh fWVEfxwIox8tc:213:1:m7842,m212,home:/usr/guest: cmb joVuRF4djg5C.:214:1:m1660,m025:/usr/guest: dave ABfXiO0cMc7r.:225:1:mh8451,m040:/usr/guest: mihalis mwZa8KXHRzkqE:230:1:m2019,m285:/usr/mihalis: tgs XRG6tBPcz0kq2:231:1:mh7461,m025:/usr/tgs:/usr/cvw/bin/sh uucpa Tqj9p7MbSckWM:238:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico bs fRwQb5d9OGKf6:251:1:m3887,m204:/usr/guest: wsb FAV9YYz8p9E7A:254:1:m2591,m148:/usr/guest: uucpb A3mRwDQ93/g6o:259:1:mh0000,m000:/usr/spool/uucppublic:/usr/lib/uucp/uucico cvw QyAYytOfVlwU6:266:1:mh1548,m301:/usr/cvw:/usr/cvw/bin/sh bsb 2ovW8RVTtCJnc:268:1:mh8092,m150:/usr/bsb: dsj UWawW3hN0sxAM:276:1:mh6784,m164:/usr/dsj: mrg s6Hg32FrhOATs:277:1:mh6784,m164:/usr/mrg: lwf FF27akAjJ5MOs:281:1:mh8085,mh102,lwf:/usr/guest: kam ze/k68Ms3dthg:287:1:m5579,m048:/usr/guest: ejs /cyBUkbW.D7uU:290:1:m0000,m000:/usr/guest: ark z/IgEAQYIBpOw:292:1:mh6947,m215,ark:/usr/ark: kfc 7W6ZdiDwb3kZc:303:1:m6581,m266:/usr/guest: rob xOkmkcOe3Nrgc:304:1:m0130,m322:/usr/guest: theo cscWu8sY7LXaM:307:1:m8417,m169:/usr/guest:/bin/sh djr 1Jk/Y729gZOS6:309:1:M7701,M097:/usr/guest: wmc 9IjUIKaH9J3BQ:312:1:mh8444,m050,wmco:/usr/guest: bart /jEdquTKW.ytM:313:1::/usr/guest:/bin/sh sally B/fSPToWep5DQ:314:1::/usr/guest:/bin/sh ehg kDDmV7EV6Rgb2:320:1:mh8732,m050,ehg:/usr/ehg: dds m7QmYNMtgj89g:324:1::/usr/dds: libr sorry:330:1::/usr/mel/books: dbm 7Ae8dDNmT00bI:334:1:m8896,m091:/usr/guest: srm w7t1dxime7v6E:362:1::/usr/srm:csh jkh e9fuiOFbFISOk:363:1::/usr/guest: aek IIioZy5hT7c4o:365:1::/usr/guest: tac wM4MxaujpUd5E:377:1:mh0000,m000:/usr/tac: jwg m0gyWvNpfv5mk:454:1:mh8632,m336:/usr/jwg: hania kUjpPUhNMmqs.:501:1::/usr/guest: jerq Dr3oM/S2pl2jY:502:1::/usr/jerq/wrap: kjs QVKFALdfgyCpw:503:1::/usr/tgs/kjs: jim DP6t0XVwlWOqw:632:1::/usr/guest: bwk1 seBQIwB6RQq9s:999:1:mh1548,m301:/usr/bwk: claire t6M0uDxCE7h7E:328:1:mh9323,m147:/usr/claire: egc xZX3RQm9R4w3.:297:1:m0000,m000:/usr/egc: root FnYk2ARoSqy5s:0:1:m0130,m322:/: daemon x:1:1:m0000,m000:/: sys sorry:2:2:m0130,m322:/usr/sys: bin sorry:3:4:m0130,m322:/bin: rhm Jxoi/5WRkeSf2:5:1:m0130,m322:/usr/guest: ken X.68wd1.ijayM:6:1:m0130,m322:/usr/guest: dmr C4u3dJWbg7RCk:7:1:mh1092,m069:/usr/guest/dmr: doug Ki71crWGxw/yM:8:1:m1660,m025:/usr/guest: bwk cI/xCTQIhLiIs:9:1:mh1548,m301:/usr/bwk: greg aP/aSvprvNzjs:10:1:m0130,m322:/usr/guest: tdk BpqFZxM1OM8fs:12:1:m0130,m322:/usr/tdk: ava 39pE5M497AxxA:15:1:m1357,m242:/usr/ava: scj y937pkRi0VkSQ:24:1:m5190,m292:/usr/guest: mel WdR3IjGmtatqE:26:1:m2019,m285,pounce,lesk:/usr/guest: agf X3yQDkiqWmPJg:34:1:m1699,m245:/usr/guest: llc Z/l25S2gaFn7U:41:1:m1650,m324:/usr/guest: lem JuvkSQUElv7mE:43:1:m0220,m157,l:/usr/guest: uucp sorry:48:1:mh2019,m285,nowitz:/usr/spool/uucp: nuucp vR1/qGT0tTmKY:48:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico duucp FvLWIgnf7/Yps:48:1:mh2019,m285,nowitz:/usr/spool/uucp: spm NeULgAzcCIE7Q:49:1:m1988,m322:/usr/guest: mb 5qmRMH553bNrQ:83:1:m5163,m207:/usr/guest: sif YExH0DpvsP6w6:91:1:m5192,m044:/usr/guest: dot cThsU.QsIRNgw:99:1:m5579,m048:/usr/guest: rje ti0JsP1n6fIMc:109:1:m5429,m096,jane:/usr/guest: vgl SUcT5i54Zr97M:112:1:m5579,m048:/usr/guest: jrv Gaov1FacwJWRk:114:1:m3887,m204:/usr/guest: nls 8lZyoosHv82sA:130:1:m4216,m050:/usr/guest: met C7iNv/YNUuK4Y:132:1:m6251,m322:/usr/guest: sue CWSau82zCx4TI:156:1:m2591,m148,2c576:/usr/guest: ravi rvJNlk5jwLXK6:167:1:m0000,m322:/usr/guest: pjw xNQy//GDa8FFg:170:1:m6534,m301:/usr/guest:/bin/csh jhc FueJau/xGh7TI:171:1::/usr/guest: lck DRw4p0msMLxDk:172:1:m6532,m149:/usr/guest: moh fWVEfxwIox8tc:213:1:m7842,m212,home:/usr/guest: cmb joVuRF4djg5C.:214:1:m1660,m025:/usr/guest: dave ABfXiO0cMc7r.:225:1:mh8451,m040:/usr/guest: mihalis mwZa8KXHRzkqE:230:1:m2019,m285:/usr/mihalis: tgs XRG6tBPcz0kq2:231:1:mh7461,m025:/usr/tgs:/usr/cvw/bin/sh uucpa Tqj9p7MbSckWM:238:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico bs fRwQb5d9OGKf6:251:1:m3887,m204:/usr/guest: wsb FAV9YYz8p9E7A:254:1:m2591,m148:/usr/guest: uucpb A3mRwDQ93/g6o:259:1:mh0000,m000:/usr/spool/uucppublic:/usr/lib/uucp/uucico cvw QyAYytOfVlwU6:266:1:mh1548,m301:/usr/cvw:/usr/cvw/bin/sh bsb 2ovW8RVTtCJnc:268:1:mh8092,m150:/usr/bsb: dsj UWawW3hN0sxAM:276:1:mh6784,m164:/usr/dsj: mrg s6Hg32FrhOATs:277:1:mh6784,m164:/usr/mrg: lwf FF27akAjJ5MOs:281:1:mh8085,mh102,lwf:/usr/guest: kam ze/k68Ms3dthg:287:1:m5579,m048:/usr/guest: ejs /cyBUkbW.D7uU:290:1:m0000,m000:/usr/guest: ark z/IgEAQYIBpOw:292:1:mh6947,m215,ark:/usr/ark: kfc 7W6ZdiDwb3kZc:303:1:m6581,m266:/usr/guest: rob xOkmkcOe3Nrgc:304:1:m0130,m322:/usr/guest: theo cscWu8sY7LXaM:307:1:m8417,m169:/usr/guest:/bin/sh djr 1Jk/Y729gZOS6:309:1:M7701,M097:/usr/guest: wmc 9IjUIKaH9J3BQ:312:1:mh8444,m050,wmco:/usr/guest: bart /jEdquTKW.ytM:313:1::/usr/guest:/bin/sh sally B/fSPToWep5DQ:314:1::/usr/guest:/bin/sh ehg kDDmV7EV6Rgb2:320:1:mh8732,m050,ehg:/usr/ehg: dds m7QmYNMtgj89g:324:1::/usr/dds: libr sorry:330:1::/usr/mel/books: dbm 7Ae8dDNmT00bI:334:1:m8896,m091:/usr/guest: srm w7t1dxime7v6E:362:1::/usr/srm:csh jkh e9fuiOFbFISOk:363:1::/usr/guest: aek IIioZy5hT7c4o:365:1::/usr/guest: tac wM4MxaujpUd5E:377:1:mh0000,m000:/usr/tac: jwg m0gyWvNpfv5mk:454:1:mh8632,m336:/usr/jwg: hania kUjpPUhNMmqs.:501:1::/usr/guest: jerq Dr3oM/S2pl2jY:502:1::/usr/jerq/wrap: kjs QVKFALdfgyCpw:503:1::/usr/tgs/kjs: jim DP6t0XVwlWOqw:632:1::/usr/guest: bwk1 seBQIwB6RQq9s:999:1:mh1548,m301:/usr/bwk: claire t6M0uDxCE7h7E:328:1:mh9323,m147:/usr/claire: egc xZX3RQm9R4w3.:297:1:m0000,m000:/usr/egc: root FnYk2ARoSqy5s:0:1:m0130,m322:/: daemon x:1:1:m0000,m000:/: sys sorry:2:2:m0130,m322:/usr/sys: bin sorry:3:4:m0130,m322:/bin: rhm Jxoi/5WRkeSf2:5:1:m0130,m322:/usr/guest: ken X.68wd1.ijayM:6:1:m0130,m322:/usr/guest: dmr C4u3dJWbg7RCk:7:1:mh1092,m069:/usr/guest/dmr: doug Ki71crWGxw/yM:8:1:m1660,m025:/usr/guest: bwk cI/xCTQIhLiIs:9:1:mh1548,m301:/usr/bwk: greg aP/aSvprvNzjs:10:1:m0130,m322:/usr/guest: tdk BpqFZxM1OM8fs:12:1:m0130,m322:/usr/tdk: ava 39pE5M497AxxA:15:1:m1357,m242:/usr/ava: scj y937pkRi0VkSQ:24:1:m5190,m292:/usr/guest: mel WdR3IjGmtatqE:26:1:m2019,m285,pounce,lesk:/usr/guest: agf X3yQDkiqWmPJg:34:1:m1699,m245:/usr/guest: llc Z/l25S2gaFn7U:41:1:m1650,m324:/usr/guest: lem JuvkSQUElv7mE:43:1:m0220,m157,l:/usr/guest: uucp sorry:48:1:mh2019,m285,nowitz:/usr/spool/uucp: nuucp vR1/qGT0tTmKY:48:1:mh2019,m285,uucp:/usr/spool/uucppublic:/usr/lib/uucp/uucico duucp FvLWIgnf7/Yps:48:1:mh2019,m285,nowitz:/usr/spool/uucp: spm NeULgAzcCIE7Q:49:1:m1988,m322:/usr/guest: mb 5qmRMH553bNrQ:83:1:m5163,m207:/usr/guest: sif YExH0DpvsP6w6:91:1:m5192,m044:/usr/guest: dot cThsU.QsIRNgw:99:1:m5579,m048:/usr/guest: rje ti0JsP1n6fIMc:109:1:m5429,m096,jane:/usr/guest: vgl SUcT5i54Zr97M:112:1:m5579,m048:/usr/guest: jrv Gaov1FacwJWRk:114:1:m3887,m204:/usr/guest: nls 8lZyoosHv82sA:130:1:m4216,m050:/usr/guest: met C7iNv/YNUuK4Y:132:1:m6251,m322:/usr/guest: sue CWSau82zCx4TI:156:1:m2591,m148,2c576:/usr/guest: ravi rvJNlk5jwLXK6:167:1:m0000,m322:/usr/guest: pjw xNQy//GDa8FFg:170:1:m6534,m301:/usr/guest:/bin/csh jhc try 685727378 9 1 100775 129 ` td=td.1 for i in $* do echo $i: ind <$i time ../a.out -f $i $td >foo1 time /usr/bin/awk -f $i $td >foo2 cmp foo1 foo2 done t.concat 685727378 9 1 100664 26 ` { x = $1; print x (++i) } t.delete 685727378 9 1 100664 213 ` { n = split($0, x) if (n != NF) printf("split screwed up %d %d\n", n, NF) delete x[1] k = 0 for (i in x) k++ if (k != NF-1) printf "delete miscount %d elems should be %d at line %d\n", k, NF-1, NR } t.fun 685727378 9 1 100664 86 ` function g() { return "{" f() "}" } function f() { return $1 } { print "<" g() ">" } t.fun0 685727378 9 1 100664 66 ` function f(a) { print "hello"; return a } { print "<" f($1) ">" } t.fun1 685727378 9 1 100664 56 ` function f(a,b,c) { print "hello" } NR < 3 { f(1,2,3) } t.fun2 685727378 9 1 100664 119 ` function f(n) { while (n < 10) { print n n = n + 1 } } function g(n) { print "g", n } { f($1); g($1); print n } t.fun3 685727378 9 1 100664 97 ` function f(n) { while ((n /= 10) > 1) print n } function g(n) { print "g", n } { f($1); g($1) } t.fun4 685727378 9 1 100664 100 ` function f(a, n) { for (i=1; i <= n; i++) print " " a[i] } { print n = split($0, x) f(x, n) } t.fun5 685727378 9 1 100664 103 ` function f(a) { return split($0, a) } { print n = f(x) for (i = 1; i <= n; i++) print " " x[i] } t.gsub 685727378 9 1 100664 31 ` {gsub(/[aeiou]/,"foo"); print} t.randk 685727379 9 1 100664 107 ` { k = 2 n = NF i = 1 while ( i <= n ) { if ( rand() < k/n ) { print i k-- } n-- i++ } } t.stderr 685727379 9 1 100664 38 ` /bad/ { print | "cat 1>&2" } {print} t.sub 685727379 9 1 100664 396 ` {sub(/[aeiou]/, "foo"); print} {sub("[aeiou]", "foo"); print} {gsub(/[aeiou]/, "foo"); print} {gsub("[aeiou]", "foo"); print} {sub(/[aeiou]/, "&foo"); print} {sub("[aeiou]", "&foo"); print} {gsub(/[aeiou]/, "&foo"); print} {gsub("[aeiou]", "&foo"); print} {sub(/[aeiou]/, "\&foo"); print} {sub("[aeiou]", "\&foo"); print} {gsub(/[aeiou]/, "\&foo"); print} {gsub("[aeiou]", "\&foo"); print} t.set0a 685727379 9 1 100664 41 ` {$0 = $2; print; print NF, $0; print $1} t.reFS 685727379 9 1 100664 39 ` BEGIN { FS = "\t+" } { print $1, $2 } countries 685727379 9 1 100664 256 ` USSR 8649 275 Asia Canada 3852 25 North America China 3705 1032 Asia USA 3615 237 North America Brazil 3286 134 South America India 1267 746 Asia Mexico 762 78 North America France 211 55 Europe Japan 144 120 Asia Germany 96 61 Europe England 94 56 Europe T.system 685727379 9 1 100775 205 ` echo T.system: test system built-in awk=${awk-../a.out} rm -f foo $awk 'BEGIN { n = system("exit 3") print n exit n+1 } ' >foo echo $? >>foo echo "3 4" >foo1 diff foo foo1 || echo 'BAD: T.system (1)' tt.13 685727379 9 1 100664 81 ` { for (i = 1; i <= NF; i++) x[i] = $i for (i = 1; i <= NF; i++) print x[i] } t.builtins 685727379 9 1 100664 87 ` /^[0-9]/ { print $1, length($1), log($1), sqrt($1), int(sqrt($1)), exp($1 % 10) } t.re2 685727379 9 1 100664 21 ` /[a-z]()[0-9]/ !/^$/ t.set0b 685727379 9 1 100664 77 ` {x=$1 = $0 = $2; print } {$0 = $2 = $1; print } {$(0) = $(2) = $(1); print } t.assert 685727379 9 1 100664 228 ` # tests whether function returns sensible type bits function assert(cond) { # assertion if (!cond) print " >>> assert failed <<<" } function i(x) { return x } { m = length($1); n = length($2); n = i(n); assert(m > n) } tt.10a 685727379 9 1 100664 26 ` BEGIN { x = ".$" } $0 ~ x tt.13a 685727379 9 1 100664 96 ` { for (i = 1; i <= NF; i++) x[i] = $i for (i = 1; i <= NF; i++) printf "%d %s\n", i, x[i] } t.gsub1 685727379 9 1 100664 23 ` {gsub(/$/,"x"); print} t.sub1 685727379 9 1 100664 23 ` {sub(/.$/,"x"); print} t.sub2 685727379 9 1 100664 51 ` {sub(/.$/,"&&"); print} {sub(/.$/,"&\\&&"); print} t.exit1 685727379 9 1 100664 257 ` BEGIN { print "this is before calling abort" abort(1) print "this is after calling abort" } function abort(n) { print "in abort - before exit", n exit 2 print "in abort - after exit" } END { print "into END" abort(2) print "should not see this" } T.builtin 685727379 9 1 100775 1525 ` echo T.builtin: test miscellaneous builtin functions awk=${awk-../a.out} $awk 'BEGIN { print index(123, substr(123, 2)) }' >foo1 echo 2 >foo2 diff foo1 foo2 || echo 'BAD: T.builtin (index/substr)' $awk 'BEGIN { pi = 2 * atan2(1, 0) printf("%.5f %.3f %.3f %.5f %.3f\n", pi, sin(pi), cos(pi/2), exp(log(pi)), log(exp(10))) }' >foo1 echo '3.14159 0.000 0.000 3.14159 10.000' >foo2 diff foo1 foo2 || echo 'BAD: T.builtin (sin/cos)' $awk 'BEGIN { s = srand() # set a real random start for (i = 1; i <= 100; i++) print rand() >"foo1" srand(s) # reset it for (i = 1; i <= 100; i++) print rand() >"foo2" }' diff foo1 foo2 || echo 'BAD: T.builtin (rand)' echo 'hello, WORLD!' | $awk '{ printf("%s|%s|%s\n", tolower($0), toupper($0), $0)}' >foo1 echo 'hello, world!|HELLO, WORLD!|hello, WORLD!' >foo2 diff foo1 foo2 || echo 'BAD: T.builtin (toupper/tolower)' $awk 'BEGIN { j = 1; sprintf("%d", 99, ++j) # does j get incremented? if (j != 2) print "BAD: T.builtin (printf arg list not evaluated)" }' $awk 'BEGIN { j = 1; substr("", 1, ++j) # does j get incremented? if (j != 2) print "BAD: T.builtin (substr arg list not evaluated)" }' $awk 'BEGIN { j = 1; sub(/1/, ++j, z) # does j get incremented? if (j != 2) print "BAD: T.builtin (sub() arg list not evaluated)" }' $awk 'BEGIN { j = 1; length("zzzz", ++j, ++j) # does j get incremented? if (j != 3) print "BAD: T.builtin (excess length args not evaluated)" }' 2>foo grep 'too many arg' foo >/dev/null || echo 'T.bad: too many args not caught' T.redir 703092417 9 1 100775 1151 ` echo T.redir: test redirections awk=${awk-../a.out} $awk '{ print >"foo" }' /etc/passwd diff foo /etc/passwd || echo 'BAD: T.redir (print >"foo")' rm -f foo $awk '{ print >>"foo" }' /etc/passwd diff foo /etc/passwd || echo 'BAD: T.redir (print >>"foo")' rm -f foo $awk 'NR%2 == 1 { print >>"foo" } NR%2 == 0 { print >"foo" }' /etc/passwd diff foo /etc/passwd || echo 'BAD: T.redir (print > and >>"foo")' rm -f foo $awk '{ print | "cat >foo" }' /etc/passwd diff foo /etc/passwd || echo 'BAD: T.redir (print | "cat >foo")' # tests flush of stdout before opening pipe echo ' head 1 2' >foo1 $awk 'BEGIN { print " head" for (i = 1; i < 3; i++) print i | "sort" }' >foo2 diff foo1 foo2 || echo 'BAD: T.redir (buffering)' rm -f foo[12] $awk '{ print >"/dev/stderr" }' /etc/passwd 1>foo1 2>foo2 diff foo2 /etc/passwd || echo 'BAD: T.redir (print >"/dev/stderr")' diff foo1 /dev/null || echo 'BAD: T.redir (print >"/dev/stderr")' rm -f foo[12] $awk '{ print >"/dev/stdout" }' /etc/passwd 1>foo1 2>foo2 diff foo1 /etc/passwd || echo 'BAD: T.redir (print >"/dev/stdout")' diff foo2 /dev/null || echo 'BAD: T.redir (print >"/dev/stderr")' t.set1 685727379 9 1 100664 51 ` function f(x) { x = 1; print x } { f($0) f($1) } t.set2 685727379 9 1 100664 41 ` { n = length($0) % 2 $n = $2 print } t.set3 685727379 9 1 100664 29 ` { i = 1; $i = $i/10; print } t.vf2 685727379 9 1 100664 27 ` { print $NF++; print $NF } t.pat 685727379 9 1 100664 52 ` /a/ || /b/ /a/ && /b/ /a/ && NR > 10 /a/ || NR > 10 t.intest2 685727379 9 1 100664 237 ` { line = substr($0, index($0, " ")) print line n = split(line, x) x[$0, $1] = $0 print x[$0, $1] print "<<<" for (i in x) print i, x[i] print ">>>" if (($0,$1) in x) print "yes" if ($1 in x) print "yes" else print "no" } t.cond 685727379 9 1 100664 173 ` { print (substr($2,1,1) > substr($2,2,1)) ? $1 : $2 } { x = substr($1, 1, 1); y = substr($1, 2, 1); z = substr($1, 3, 1) print (x > y ? (x > z ? x : z) : y > z ? y : z) } t.re1a 685727379 9 1 100664 136 ` BEGIN { r1 = "[a-cg-j1-3]" r2 = "[^aeiou]" } $0 ~ r1 { print $0 " matches /[a-cg-j1-3]/" } $0 ~ r2 { print $0 " matches /[^aeiou]/" } t.re3 685727379 9 1 100664 126 ` { r1 = $1 r2 = $1 ":" } length(r1) && $0 ~ r1 { print $0 " matches " r1 } length(r1) && $0 ~ r2 { print $0 " matches " r2 } t.re4 685727379 9 1 100664 205 ` BEGIN { r1 = "xxx" r2 = "xxx" ":" r3 = ":" r2 r4 = "a" } $0 ~ r1 { print $0 " matches " r1 } $0 ~ r2 { print $0 " matches " r2 } $0 ~ r3 { print $0 " matches " r3 } $0 ~ r4 { print $0 " matches " r4 } t.re5 685727379 9 1 100664 83 ` BEGIN { for (i = 0; i <= 9; i++) r[i] = i } { for (i in r) if ($0 ~ r[i]) print } Compare.T 685727379 9 1 100775 24 ` for i in T.* do $i done Compare.tt 685727379 9 1 100775 402 ` # an arbitrary collection of input data cat td.1 td.1 >foo.td sed 's/^........................//' td.1 >>foo.td pr -m td.1 td.1 td.1 >>foo.td pr -2 td.1 >>foo.td wc foo.td td=foo.td >footot for i in $* do echo $i: ind <$i time awk -f $i $td >foo2 2>foo2t cat foo2t time ../a.out -f $i $td >foo1 2>foo1t cat foo1t cmp foo1 foo2 echo $i: >>footot cat foo1t foo2t >>footot done ctimes footot T.re 685727379 9 1 100775 2274 ` echo T.re: tests of regular expression code awk ' BEGIN { FS = "\t" awk = "../a.out" } NF == 0 { next } $1 != "" { # new test re = $1 } $2 != "" { # either ~ or !~ op = $2 if (op == "~") neg = "!" else if (op == "!~") neg = "" } $3 != "" { # new test string str = $3 } $3 == "\"\"" { # explicit empty line $3 = "" } NF > 2 { # generate a test input = $3 test = sprintf("echo '"'"'%s'"'"' | %s '"'"'%s/%s/ {print \"%d fails %s %s %s\"}'"'"'", input, awk, neg, re, NR, re, op, input) # printf(" %3d %s %s %s:\n", NR, re, op, input) # print "test is |" test "|" system(test) # system("bprint -c ../a.out") nt++ } END { print " " nt, "tests" } ' <<\!!! a ~ a ba bab !~ "" x xxxxx . ~ x xxx !~ "" .a ~ xa xxa xax !~ a ax "" $ ~ x "" .$ ~ x xx !~ "" a$ ~ a ba bbba !~ ab x "" ^ ~ x "" ^ ^a$ ~ a !~ xa ax xax "" ^a.$ ~ ax aa !~ xa aaa axy "" ^$ ~ "" !~ x ^ ^.a ~ xa xaa !~ a "" ^.*a ~ a xa xxxxxxa !~ "" ^.+a ~ xa xxxxxxa !~ "" a ax a* ~ "" a aaaa xa xxxx aa* ~ a aaa xa !~ xxxx "" \$ ~ x$ $ $x x$x !~ "" x \. ~ . !~ x "" xr+y ~ xry xrry xrrrrrry !~ ry xy xr xr?y ~ xy xry !~ xrry a?b?c? ~ "" x ^a?b?x ~ x ax bx abx xa !~ "" ab aba [0-9] ~ 1 567 x0y !~ abc "" [^0-9] !~ 1 567 "" ~ abc x0y [0-25-69] ~ 0 1 2 5 6 9 !~ 3 4 7 8 x[0-9]+y ~ x0y x23y x12345y !~ 0y xy x[0-9]?y ~ xy x1y !~ x23y x[[]y ~ x[y !~ xy x[[]y x]y x[^[]y ~ xay !~ x[y x[-]y ~ x-y !~ xy x+y x[^-]y ~ x+y !~ x-y xy [0\-9] ~ 0 - 9 !~ 1 "" [-1] ~ - 1 !~ 0 [0-] ~ 0 - !~ 1 [^-0] ~ x ^ !~ - 0 "" [^0-] ~ x ^ !~ - 0 "" x|y ~ x y xy !~ a "" ^abc|xyz$ ~ abc abcd axyz xyz !~ xabc xyza ^(abc|xyz)$ ~ abc xyz !~ abcxyz abcx cxyz ^x\|y$ ~ x|y !~ xy ^x\\y$ ~ x\y !~ xy x\\y xay \141\142 ~ ab xab abx !~ a b ax axb x\056y ~ x.y !~ x. .x xxx xby because \056 is not the metacharacter . xcy ditto [\60-\62\65-6\71] ~ 0 1 2 5 6 9 !~ 3 4 7 8 [\60-2\65-6\71] ~ 0 1 2 5 6 9 !~ 3 4 7 8 [\x30-\x32\x35-6\71] ~ 0 1 2 5 6 9 !~ 3 4 7 8 [\x30-2\x35-6\x39] ~ 0 1 2 5 6 9 !~ 3 4 7 8 T.chem 685727379 9 1 100775 165 ` echo T.chem: test chem.awk awk=${awk-../a.out} for i in *.p do $awk -f chem.awk $i >foo1 awk -f chem.awk $i >foo2 diff foo1 foo2 || echo "BAD: T.chem on $i" done lsd1.p 685727379 9 1 100664 427 ` .cstart B: benzene pointing right F: flatring pointing left put N at 5 double 3,4 with .V1 at B.V2 H below F.N R: ring pointing right with .V4 at B.V6 front bond right from R.V6 ; H W: ring pointing right with .V2 at R.V6 put N at 1 double 3,4 bond right from W.N ; CH3 back bond -60 from W.V5 ; H bond up from W.V5 ; C doublebond up from C ; O bond right from C ; N bond 45 from N ; C2H5 bond 135 from N ; C2H5 .cend penicil.p 685727379 9 1 100664 1006 ` .so /usr/bwk/talks/vg.mac .vg .ft R .cstart # this is the structure of penicillin G, an antibiotic size 14 R1: ring4 pointing 45 put N at 2 doublebond -135 from R1.V3 ; O backbond up from R1.V1 ; H frontbond -45 from R1.V4 ; N H above N bond left from N ; C doublebond up ; O bond length .1 left from C ; CH2 bond length .1 left benzene pointing left R2: flatring5 put S at 1 put N at 4 with .V5 at R1.V1 bond 20 from R2.V2 ; CH3 bond 90 from R2.V2 ; CH3 bond 90 from R2.V3 ; H backbond 170 from R2.V3 ; COOH .cend .CW # this is the structure of penicillin G, an antibiotic R1: ring4 pointing 45 put N at 2 doublebond -135 from R1.V3 ; O backbond up from R1.V1 ; H frontbond -45 from R1.V4 ; N H above N bond left from N ; C doublebond up ; O bond length .1 left from C ; CH2 bond length .1 left benzene pointing left R2: flatring5 put S at 1 put N at 4 with .V5 at R1.V1 bond 20 from R2.V2 ; CH3 bond 90 from R2.V2 ; CH3 bond 90 from R2.V3 ; H backbond 170 from R2.V3 ; COOH res.p 685727379 9 1 100664 629 ` .cstart CH3O bond 60 R1: benzene R2: aromatic flatring5 pointing down put N at 1 with .V3 at R1.V2 H below R2.V1 R3: ring put N at 3 with .V5 at R2.V5 R4: ring put N at 1 with .V1 at R3.V3 back bond -120 from R4.V4 ; H back bond 60 from R4.V3 ; H R5: ring with .V1 at R4.V3 bond -120 ; C doublebond down from C ; O CH3O left of C back bond 60 from R5.V3 ; H back bond down from R5.V4 ; O CH3 right of O bond 120 from R5.V3 ; O bond right lenght .1 from O ; C double bond down ; O bond right length .1 from C B: benzene pointing right bond 30 from B ; OCH3 bond right from B ; OCH3 bond 150 from B ; OCH3 .cend cleanup 685727379 9 1 100775 197 ` rm -f core foo* junk* glop* *temp* *.p bigpop smallpop tt.* countries td.1 rm -f T.* t.* p.* u.* chem.awk test.data test.countries Compare* rm -f *.awk *.out testall try ind NOTES cleanup xc yc bundle.awk 685727379 9 1 100664 67 ` # bundle - combine multiple files into one { print FILENAME, $0 } unbundle.awk 685727379 9 1 100664 144 ` # unbundle - unpack a bundle into separate files $1 != prev { close(prev); prev = $1 } { print substr($0, index($0, " ") + 1) >$1 } chem.awk 685727379 9 1 100664 11679 ` BEGIN { macros = "/usr/bwk/chem/chem.macros" # CHANGE ME!!!!! pi = 3.141592654 deg = 57.29578 setparams(1.0) set(dc, "up 0 right 90 down 180 left 270 ne 45 se 135 sw 225 nw 315") set(dc, "0 n 30 ne 45 ne 60 ne 90 e 120 se 135 se 150 se 180 s") set(dc, "300 nw 315 nw 330 nw 270 w 210 sw 225 sw 240 sw") } function init() { printf ".PS\n" if (firsttime++ == 0) { printf "copy \"%s\"\n", macros printf "\ttextht = %g; textwid = .1; cwid = %g\n", textht, cwid printf "\tlineht = %g; linewid = %g\n", lineht, linewid } printf "Last: 0,0\n" RING = "R"; MOL = "M"; BOND = "B"; OTHER = "O" # manifests last = OTHER dir = 90 } function setparams(scale) { lineht = scale * 0.2 linewid = scale * 0.2 textht = scale * 0.16 db = scale * 0.2 # bond length cwid = scale * 0.12 # character width cr = scale * 0.08 # rad of invis circles at ring vertices crh = scale * 0.16 # ht of invis ellipse at ring vertices crw = scale * 0.12 # wid dav = scale * 0.015 # vertical shift up for atoms in atom macro dew = scale * 0.02 # east-west shift for left of/right of ringside = scale * 0.3 # side of all rings dbrack = scale * 0.1 # length of bottom of bracket } { lineno++ } /^(\.cstart)|(begin chem)/ { init(); inchem = 1; next } /^(\.cend)|(end)/ { inchem = 0; print ".PE"; next } /^\./ { print; next } # troff inchem == 0 { print; next } # everything else $1 == "pic" { shiftfields(1); print; next } # pic pass-thru $1 ~ /^#/ { next } # comment $1 == "textht" { textht = $NF; next } $1 == "cwid" { cwid = $NF; next } $1 == "db" { db = $NF; next } $1 == "size" { if ($NF <= 4) size = $NF; else size = $NF/10 setparams(size); next } { print "\n#", $0 } # debugging, etc. { lastname = "" } $1 ~ /^[A-Z].*:$/ { # label; falls thru after shifting left lastname = substr($1, 1, length($1)-1) print $1 shiftfields(1) } $1 ~ /^\"/ { print "Last: ", $0; last = OTHER; next } $1 ~ /bond/ { bond($1); next } $1 ~ /^(double|triple|front|back)$/ && $2 == "bond" { $1 = $1 $2; shiftfields(2); bond($1); next } $1 == "aromatic" { temp = $1; $1 = $2; $2 = temp } $1 ~ /ring|benz/ { ring($1); next } $1 == "methyl" { $1 = "CH3" } # left here as an example $1 ~ /^[A-Z]/ { molecule(); next } $1 == "left" { left[++stack] = fields(2, NF); printf("Last: [\n"); next } $1 == "right" { bracket(); stack--; next } $1 == "label" { label(); next } /./ { print "Last: ", $0; last = OTHER } END { if (firsttime == 0) error("did you forget .cstart and .cend?") if (inchem) printf ".PE\n" } function bond(type, i, goes, from) { goes = "" for (i = 2; i <= NF; i++) if ($i == ";") { goes = $(i+1) NF = i - 1 break } leng = db from = "" for (cf = 2; cf <= NF; ) { if ($cf ~ /(\+|-)?[0-9]+|up|down|right|left|ne|se|nw|sw/) dir = cvtdir(dir) else if ($cf ~ /^leng/) { leng = $(cf+1) cf += 2 } else if ($cf == "to") { leng = 0 from = fields(cf, NF) break } else if ($cf == "from") { from = dofrom() break } else if ($cf ~ /^#/) { cf = NF+1 break; } else { from = fields(cf, NF) break } } if (from ~ /( to )|^to/) # said "from ... to ...", so zap length leng = 0 else if (from == "") # no from given at all from = "from Last." leave(last, dir) " " fields(cf, NF) printf "Last: %s(%g, %g, %s)\n", type, leng, dir, from last = BOND if (lastname != "") labsave(lastname, last, dir) if (goes) { $0 = goes molecule() } } function dofrom( n, s) { cf++ # skip "from" n = $cf if (n in labtype) # "from Thing" => "from Thing.V.s" return "from " n "." leave(labtype[n], dir) if (n ~ /^\.[A-Z]/) # "from .V" => "from Last.V.s" return "from Last" n "." corner(dir) if (n ~ /^[A-Z][^.]*\.[A-Z][^.]*$/) # "from X.V" => "from X.V.s" return "from " n "." corner(dir) return fields(cf-1, NF) } function bracket( t) { printf("]\n") if ($2 == ")") t = "spline" else t = "line" printf("%s from last [].sw+(%g,0) to last [].sw to last [].nw to last [].nw+(%g,0)\n", t, dbrack, dbrack) printf("%s from last [].se-(%g,0) to last [].se to last [].ne to last [].ne-(%g,0)\n", t, dbrack, dbrack) if ($3 == "sub") printf("\" %s\" ljust at last [].se\n", fields(4,NF)) } function molecule( n, type) { n = $1 if (n == "BP") { $1 = "\"\" ht 0 wid 0" type = OTHER } else { $1 = atom(n) type = MOL } gsub(/[^A-Za-z0-9]/, "", n) # for stuff like C(OH3): zap non-alnum if ($2 == "") printf "Last: %s: %s with .%s at Last.%s\n", \ n, $0, leave(type,dir+180), leave(last,dir) else if ($2 == "below") printf("Last: %s: %s with .n at %s.s\n", n, $1, $3) else if ($2 == "above") printf("Last: %s: %s with .s at %s.n\n", n, $1, $3) else if ($2 == "left" && $3 == "of") printf("Last: %s: %s with .e at %s.w+(%g,0)\n", n, $1, $4, dew) else if ($2 == "right" && $3 == "of") printf("Last: %s: %s with .w at %s.e-(%g,0)\n", n, $1, $4, dew) else printf "Last: %s: %s\n", n, $0 last = type if (lastname != "") labsave(lastname, last, dir) labsave(n, last, dir) } function label( i, v) { if (substr(labtype[$2], 1, 1) != RING) error(sprintf("%s is not a ring", $2)) else { v = substr(labtype[$2], 2, 1) for (i = 1; i <= v; i++) printf("\"\\s-3%d\\s0\" at 0.%d<%s.C,%s.V%d>\n", i, v+2, $2, $2, i) } } function ring(type, typeint, pt, verts, i) { pt = 0 # points up by default if (type ~ /[1-8]$/) verts = substr(type, length(type), 1) else if (type ~ /flat/) verts = 5 else verts = 6 fused = other = "" for (i = 1; i <= verts; i++) put[i] = dbl[i] = "" nput = aromatic = withat = 0 for (cf = 2; cf <= NF; ) { if ($cf == "pointing") pt = cvtdir(0) else if ($cf == "double" || $cf == "triple") dblring(verts) else if ($cf ~ /arom/) { aromatic++ cf++ # handled later } else if ($cf == "put") { putring(verts) nput++ } else if ($cf ~ /^#/) { cf = NF+1 break; } else { if ($cf == "with" || $cf == "at") withat = 1 other = other " " $cf cf++ } } typeint = RING verts pt # RING | verts | dir if (withat == 0) fused = joinring(typeint, dir, last) printf "Last: [\n" makering(type, pt, verts) printf "] %s %s\n", fused, other last = typeint if (lastname != "") labsave(lastname, last, dir) } function makering(type, pt, v, i, a, r) { if (type ~ /flat/) v = 6 # vertices r = ringside / (2 * sin(pi/v)) printf "\tC: 0,0\n" for (i = 0; i <= v+1; i++) { a = ((i-1) / v * 360 + pt) / deg printf "\tV%d: (%g,%g)\n", i, r * sin(a), r * cos(a) } if (type ~ /flat/) { printf "\tV4: V5; V5: V6\n" v = 5 } # sides if (nput > 0) { # hetero ... for (i = 1; i <= v; i++) { c1 = c2 = 0 if (put[i] != "") { printf("\tV%d: ellipse invis ht %g wid %g at V%d\n", i, crh, crw, i) printf("\t%s at V%d\n", put[i], i) c1 = cr } j = i+1 if (j > v) j = 1 if (put[j] != "") c2 = cr printf "\tline from V%d to V%d chop %g chop %g\n", i, j, c1, c2 if (dbl[i] != "") { # should check i<j if (type ~ /flat/ && i == 3) { rat = 0.75; fix = 5 } else { rat = 0.85; fix = 1.5 } if (put[i] == "") c1 = 0 else c1 = cr/fix if (put[j] == "") c2 = 0 else c2 = cr/fix printf "\tline from %g<C,V%d> to %g<C,V%d> chop %g chop %g\n", rat, i, rat, j, c1, c2 if (dbl[i] == "triple") printf "\tline from %g<C,V%d> to %g<C,V%d> chop %g chop %g\n", 2-rat, i, 2-rat, j, c1, c2 } } } else { # regular for (i = 1; i <= v; i++) { j = i+1 if (j > v) j = 1 printf "\tline from V%d to V%d\n", i, j if (dbl[i] != "") { # should check i<j if (type ~ /flat/ && i == 3) { rat = 0.75 } else rat = 0.85 printf "\tline from %g<C,V%d> to %g<C,V%d>\n", rat, i, rat, j if (dbl[i] == "triple") printf "\tline from %g<C,V%d> to %g<C,V%d>\n", 2-rat, i, 2-rat, j } } } # punt on triple temporarily # circle if (type ~ /benz/ || aromatic > 0) { if (type ~ /flat/) r *= .4 else r *= .5 printf "\tcircle rad %g at 0,0\n", r } } function putring(v) { # collect "put Mol at n" cf++ mol = $(cf++) if ($cf == "at") cf++ if ($cf >= 1 && $cf <= v) { m = mol gsub(/[^A-Za-z0-9]/, "", m) put[$cf] = m ":" atom(mol) } cf++ } function joinring(type, dir, last) { # join a ring to something if (substr(last, 1, 1) == RING) { # ring to ring if (substr(type, 3) == substr(last, 3)) # fails if not 6-sided return "with .V6 at Last.V2" } # if all else fails return sprintf("with .%s at Last.%s", \ leave(type,dir+180), leave(last,dir)) } function leave(last, d, c, c1) { # return vertex of last in dir d if (last == BOND) return "end" d = reduce(d) if (substr(last, 1, 1) == RING) return ringleave(last, d) if (last == MOL) { if (d == 0 || d == 180) c = "C" else if (d > 0 && d < 180) c = "R" else c = "L" if (d in dc) c1 = dc[d] else c1 = corner(d) return sprintf("%s.%s", c, c1) } if (last == OTHER) return corner(d) return "c" } function ringleave(last, d, rd, verts) { # return vertex of ring in dir d verts = substr(last, 2, 1) rd = substr(last, 3) return sprintf("V%d.%s", int(reduce(d-rd)/(360/verts)) + 1, corner(d)) } function corner(dir) { return dc[reduce(45 * int((dir+22.5)/45))] } function labsave(name, type, dir) { labtype[name] = type labdir[name] = dir } function dblring(v, d, v1, v2) { # should canonicalize to i,i+1 mod v d = $cf for (cf++; $cf ~ /^[1-9]/; cf++) { v1 = substr($cf,1,1) v2 = substr($cf,3,1) if (v2 == v1+1 || v1 == v && v2 == 1) # e.g., 2,3 or 5,1 dbl[v1] = d else if (v1 == v2+1 || v2 == v && v1 == 1) # e.g., 3,2 or 1,5 dbl[v2] = d else error(sprintf("weird %s bond in\n\t%s", d, $0)) } } function cvtdir(d) { # maps "[pointing] somewhere" to degrees if ($cf == "pointing") cf++ if ($cf ~ /^[+\-]?[0-9]+/) return reduce($(cf++)) else if ($cf ~ /left|right|up|down|ne|nw|se|sw/) return reduce(dc[$(cf++)]) else { cf++ return d } } function reduce(d) { # reduces d to 0 <= d < 360 while (d >= 360) d -= 360 while (d < 0) d += 360 return d } function atom(s, c, i, n, nsub, cloc, nsubc) { # convert CH3 to atom(...) if (s == "\"\"") return s n = length(s) nsub = nsubc = 0 cloc = index(s, "C") if (cloc == 0) cloc = 1 for (i = 1; i <= n; i++) if (substr(s, i, 1) !~ /[A-Z]/) { nsub++ if (i < cloc) nsubc++ } gsub(/([0-9]+\.[0-9]+)|([0-9]+)/, "\\s-3\\d&\\u\\s+3", s) if (s ~ /([^0-9]\.)|(\.[^0-9])/) # centered dot gsub(/\./, "\\v#-.3m#.\\v#.3m#", s) return sprintf("atom(\"%s\", %g, %g, %g, %g, %g, %g)", s, (n-nsub/2)*cwid, textht, (cloc-nsubc/2-0.5)*cwid, crh, crw, dav) } function in_line( i, n, s, s1, os) { s = $0 os = "" while ((n = match(s, /!?[A-Z][A-Za-z]*(([0-9]+\.[0-9]+)|([0-9]+))/)) > 0) { os = os substr(s, 1, n-1) # prefix s1 = substr(s, n, RLENGTH) # molecule if (substr(s1, 1, 1) == "!") { # !mol => leave alone s1 = substr(s1, 2) } else { gsub(/([0-9]+\.[0-9]+)|([0-9]+)/, "\\s-3\\d&\\u\\s+3", s1) if (s1 ~ /([^0-9]\.)|(\.[^0-9])/) # centered dot gsub(/\./, "\\v#-.3m#.\\v#.3m#", s1) } os = os s1 s = substr(s, n + RLENGTH) # tail } os = os s print os return } function shiftfields(n, i) { # move $n+1..$NF to $n..$NF-1, zap $NF for (i = n; i < NF; i++) $i = $(i+1) $NF = "" NF-- } function fields(n1, n2, i, s) { if (n1 > n2) return "" s = "" for (i = n1; i <= n2; i++) { if ($i ~ /^#/) break; s = s $i " " } return s } function set(a, s, i, n, q) { n = split(s, q) for (i = 1; i <= n; i += 2) a[q[i]] = q[i+1] } function error(s) { printf "chem\007: error on line %d: %s\n", lineno, s | "cat 1>&2" } t.split8 685727379 9 1 100664 179 ` { n = split ($0, x, /[0-9]+/) print n if (n != NF) print "split botch at ", NR, n, NF for (i=1; i<=n; i++) if ($i != x[i]) print "different element at ", i, x[i], $i } t.do 685727379 9 1 100664 168 ` NF > 0 { t = $0 gsub(/[ \t]+/, "", t) n = split($0, y) if (n > 0) { i = 1 s = "" do { s = s $i } while (i++ < NF) } if (s != t) print "bad at", NR } t.gsub3 685727379 9 1 100664 47 ` length($1) {gsub(substr($1,1,1),"(&)"); print} t.gsub4 685727379 9 1 100664 66 ` {gsub("[" $1 "]","(&)"); print} {gsub("[" $1 "]","(\\&)"); print} t.sub3 685727380 9 1 100664 46 ` length($1) {sub(substr($1,1,1),"(&)"); print} REGRESS 685727402 9 1 100777 145 ` if ls | awk 'END { exit NR > 100 }' then echo extracting from test.a ar x test.a fi Compare t.* Compare.1 p.? p.??* Compare.T Compare.tt tt.* t.beginexit 685727380 9 1 100664 63 ` BEGIN { while (getline && n++ < 10) print exit } { print } t.beginnext 685727380 9 1 100664 72 ` BEGIN { while (getline && n++ < 10) print print "tenth" } { print } t.delete2 685727380 9 1 100664 254 ` NR < 50 { n = split($0, x) for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) y[i,j] = n * i + j for (i = 1; i <= n; i++) delete y[i,i] k = 0 for (i in y) k++ if (k != int(n^2-n)) printf "delete2 miscount %d vs %d at %d\n", k, n^2-n, NR } t.match1 685727380 9 1 100664 158 ` NF > 0 && match($NF, $1) { print $0, RSTART, RLENGTH if (RLENGTH != length($1)) printf "match error at %d: %d %d\n", NR, RLENGTH, RSTART >"/dev/tty" } t.printf2 685727380 9 1 100664 141 ` { printf "%%: %s ... %s \t", $2, $1 x = sprintf("%8d %10.10s %u %o %x", $1, $2, $3, $3, $3*$4) x = x sprintf(" %c %c", $1, $2) print x } t.substr1 685727380 9 1 100664 35 ` NR % 2 { print substr($0, 0, -1) } t.addops 685727380 9 1 100664 371 ` { n = $1 n += $1 if (n != $1 + $1) print NR, "urk +=" n = $1 n -= $1 if (n != 0) print NR, "urk -=" n = $1 n *= 3.5 if (n != 3.5 * $1) print NR, "urk *=" n = $1 n /= 4 if (n != $1 / 4) print NR, "urk /=" n = NR n ^= 2 if (n != NR * NR) print NR, "urk1 ^=", n, NR * NR n = NR n ^= 1.5 if (n != NR * sqrt(NR)) print NR, "urk2 ^=", n, NR * sqrt(NR) } t.split3 685727380 9 1 100664 90 ` { a = $0 " " $0 " " $0 n = split (a, x, "[" $1 "]") print n, x[1], x[2], x[3], x[4] } T.errmsg 685727380 9 1 100775 3358 ` echo T.errmsg: check some error messages awk=${awk-../a.out} date >glop awk=$awk awk ' { pat = $0 prog = "" while (getline x > 0 && x != "") prog = prog "\n" x print sprintf("\n%s '"'"'%s'"'"' <glop >/dev/null 2>foo", ENVIRON["awk"], prog) print sprintf("grep '"'"'%s'"'"' foo >/dev/null || echo '"'"'%s'"'"' failed", pat, pat) } ' >foo.sh <<\! illegal primary in regular expression /(/ empty regular expression // nonterminated character class /[[/ nonterminated character class BEGIN { s = "[x"; if (1 ~ s) print "foo"} syntax error in regular expression BEGIN { if ("x" ~ /$^/) print "ugh" } syntax error in regular expression /((.)/ character class too big BEGIN { for (i = 1; i < 20; i++) s = s "a-z"; if ("x" ~ "[" s "]") print "ugh" } division by zero BEGIN { print 1/0 } division by zero in /= BEGIN { x = 1; print x /= 0 } division by zero in %= BEGIN { x = 1; print x %= 0 } division by zero in mod BEGIN { print 1%0 } can.t read value.* array name. BEGIN { x[1] = 0; split("a b c", y, x) } can.t read value.* function function f(){}; {split($0, x, f)} can.t assign.* a function function f(){}; {f = split($0, x)} can.t assign to x; it.s an array name. {x = split($0, x)} is a function, not an array function f(){}; {split($0, f)} function f called with 1 args, uses only 0 BEGIN { f(f) } function f() { print "x" } can.t use function f as argument in f BEGIN { f(f) } function f() { print "x" } x is an array, not a function { split($0, x) }; function x() {} illegal nested function function x() { function g() {} } return not in function { return } break illegal outside { break } continue illegal outside { continue } newline in string { print "abc } illegal field $(foo) BEGIN { print $"foo" } trying to access field 500 BEGIN { print $500 } next is illegal inside a function BEGIN { f() } function f() { next } not enough args in printf(%s) BEGIN { printf("%s") } weird printf conversion BEGIN { printf("%z", "foo")} function f has .* arguments, limit .* function f(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10) {} BEGIN { f(123) } bailing out ])} bailing out { print }} bailing out { print }}} illegal statement { print ))} illegal statement {{ print } illegal statement {{{ print } illegal .*next.* from BEGIN BEGIN { next } illegal .*next.* from END END { next; print NR } floating point exception BEGIN { print 10 ^ 50 } floating point exception BEGIN { print 1e35 * 1e35 } can.t open file /etc/passwd BEGIN { print "abc" >"/etc/passwd" } you can only delete array\[element\] BEGIN { delete x } you can.t define function f more than once function f() { print 1 } function f() { print 2 } function mp called with 1 args, uses only 0 function mp(){ cnt++;} BEGIN { mp(xx) } index.*doesn.t permit regular expressions BEGIN { index("abc", /a/) } log argument out of domain BEGIN { print log(-1) } exp result out of range BEGIN {print exp(1000)} null file name in print or getline BEGIN { print >foo } function has too many arguments BEGIN { length("abc", "def") } calling undefined function foo BEGIN { foo() } huge string .* in printf BEGIN { s = "x"; for (i = 1; i <= 15; i++) s = s s; printf("%s", s) } echo ' running tests in foo.sh' sh foo.sh test -r core && echo BAD: someone dropped core 1>&2 T.sub 685727380 9 1 100775 3994 ` echo T.sub: tests of sub and gsub code # input lines are of form # pattern replacement input-string sub-output gsub-output awk ' BEGIN { FS = "\t" awk = "../a.out" } NF == 0 { next } $1 ~ /^#/ { next } $1 != "" { # new pattern pat = $1 } $2 != "" { # new replacement repl = $2 } $3 != "" { # new input string str = $3 } $4 != "" { # new sub output subout = $4 } $5 != "" { # new gsub output gsubout = $5 } NF < 5 { # weird input line printf("weird test spec `%s` ignored\n", $0) | "cat 1>&2" next } { # "" => explicitly empty # printf(" %3d: %s %s %s %s %s:\n", NR, pat, repl, str, subout, gsubout) if (pat == "\"\"") pat = "" if (repl == "\"\"") repl = "" if (str == "\"\"") str = "" if (subout == "\"\"") subout = "" if (gsubout == "\"\"") gsubout = "" } { # generate a test nt++ gsub(/\\/, "&&", repl) # in case of \ enclosed test = sprintf("echo '"'"'%s'"'"' | %s '"'\n"'", str, awk) \ sprintf("{ temp = $0; sub(/%s/, \"%s\", temp)\n", pat, repl) \ sprintf(" if (temp != \"%s\") print \" sub %d fails:\", temp, \"should be %s\"\n", subout, nt, subout) \ sprintf(" gsub(/%s/, \"%s\")\n", pat, repl) \ sprintf(" if ($0 != \"%s\") print \"gsub %d fails:\", $0, \"should be %s\"\n}", gsubout, nt, gsubout) \ "'" '"'" # if (nt >= 55) print "test is: " test system(test) # system("bprint -c ../a.out") } END { print nt, "tests" } ' <<\!!! foo bar foo drek glop---these.two.are.ok a x aaa xaa xxx axa xxa xxx bbb bbb bbb "" "" "" a xy aaa xyaa xyxyxy axa xyxa xyxxy bbb bbb bbb "" "" "" . x aaa xaa xxx axa xxa xxx bbb xbb xxx "" "" "" .a x a a a ax ax ax aa x x aaab xab xab aaaa xaa xx "" "" "" $ x a ax ax "" x x .$ x "" "" "" a x x ab ax ax a$ x "" "" "" a x x b b b ab ab ab ^ x "" x x a xa xa ^a$ xx a xx xx "" "" "" b b b aa aa aa ^a.$ xy a a a "" "" "" ab xy xy ba ba ba ^$ x "" x x a a a ^.a x aa x x ba x x ab ab ab a a a ^.*a xy "" "" "" a xy xy b b b ba xy xy ^.+a xy "" "" "" a a a bb bb bb ba xy xy a* x "" x x z xz xzx az xz xzx aza xza xzx b xxx bxxx bxbxbxb x& paq xpaq xpxaqx x\& paq x&paq x&px&qx& x&y paq xypaq xypxayqxy x\&y paq x&ypaq x&ypx&yqx&y a+ x& paq pxaq pxaq x\& paq px&q px&q x&y paq pxayq pxayq x\&y paq px&yq px&yq aa* x a x x aa x x wawa wxwa wxwx \$ x "" "" "" a a a a$ ax ax $$$ x$$ xxx z$z$z zxz$z zxzxz \. x "" "" "" a a a a. ax ax ... x.. xxx z.z.z zxz.z zxzxz xr+y q xy xy xy xry q q xrry q q xryWxry qWxry qWq xr?y q AxyB AqB AqB AxryB AqB AqB Axrry Axrry Axrry a?b?c? x "" x x a x x b x x c x x ac x x acc xc xx ^a?b?q x "" "" "" q x x a a a aq x x bq x x abq x x qab xab xab abqabq xabq xabq # [0-9] ~ 1 # 567 # x0y # !~ abc # "" # [^0-9] !~ 1 # 567 # "" # ~ abc # x0y # [0-25-69] ~ 0 # 1 # 2 # 5 # 6 # 9 # !~ 3 # 4 # 7 # 8 # x[0-9]+y ~ x0y # x23y # x12345y # !~ 0y # xy # x[0-9]?y ~ xy # x1y # !~ x23y # x[[]y ~ x[y # !~ xy # x[[]y # x]y # x[^[]y ~ xay # !~ x[y # x[-]y ~ x-y # !~ xy # x+y # x[^-]y ~ x+y # !~ x-y # xy # [0\-9] ~ 0 # - # 9 # !~ 1 # "" # [-1] ~ - # 1 # !~ 0 # [0-] ~ 0 # - # !~ 1 # [^-0] ~ x # ^ # !~ - # 0 # "" # [^0-] ~ x # ^ # !~ - # 0 # "" # x|y ~ x # y # xy # !~ a # "" # ^abc|xyz$ ~ abc # abcd # axyz # xyz # !~ xabc # xyza # ^(abc|xyz)$ ~ abc # xyz # !~ abcxyz # abcx # cxyz # ^x\|y$ ~ x|y # !~ xy # ^x\\y$ ~ x\y # !~ xy # x\\y # xay # \141\142 ~ ab # xab # abx # !~ a # b # ax # axb # x\056y ~ x.y # !~ x. # .x # xxx # xby because \056 is not the metacharacter . # xcy ditto # [\60-\62\65-6\71] ~ 0 # 1 # 2 # 5 # 6 # 9 # !~ 3 # 4 # 7 # 8 # [\60-2\65-6\71] ~ 0 # 1 # 2 # 5 # 6 # 9 # !~ 3 # 4 # 7 # 8 # [\x30-\x32\x35-6\71] ~ 0 # 1 # 2 # 5 # 6 # 9 # !~ 3 # 4 # 7 # 8 # [\x30-2\x35-6\x39] ~ 0 # 1 # 2 # 5 # 6 # 9 # !~ 3 # 4 # 7 # 8 ind 685727380 9 1 100775 24 ` exec sed '/./s/^/ /' $* NOTES 685727380 9 1 100664 159 ` Need some tests for octal, hex, various string escapes. Need to complete the sub and gsub tests. more on printf, especially weird formats more on operators T.clv 685727380 9 1 100775 3473 ` echo T.clv: check command-line variables awk=${awk-../a.out} rm -f core # stdin only, no cmdline asgn echo 'hello goodbye' | $awk ' BEGIN { x=0; print x; getline; print x, $0 } ' >foo1 echo '0 0 hello' >foo2 diff foo1 foo2 || echo 'BAD: T.clv (stdin only)' # cmdline asgn then stdin echo 'hello goodbye' | $awk ' BEGIN { x=0; print x; getline; print x, $0 } ' x=1 >foo1 echo '0 1 hello' >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=1 only)' # several cmdline asgn, then stdin echo 'hello goodbye' | $awk ' BEGIN { x=0; print x; getline; print x, $0 } ' x=1 x=2 x=3 >foo1 echo '0 3 hello' >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=3 only)' # several cmdline asgn, then file echo 'hello goodbye' >foo $awk ' BEGIN { x=0; print x; getline; print x, $0 } ' x=1 x=2 x=3 foo >foo1 echo '0 3 hello' >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=3 only)' # cmdline asgn then file echo 4 >foo1 $awk 'BEGIN { getline; print x}' x=4 /dev/null >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=4 /dev/null)' #cmdline asgn then file but no read of it echo 0 >foo1 $awk 'BEGIN { x=0; getline <"/dev/null"; print x}' x=5 /dev/null >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=5 /dev/null)' #cmdline asgn then file then read echo 'xxx yyy zzz' >foo echo '6 end' >foo1 $awk 'BEGIN { x=0; getline; print x} END { print x }' x=6 foo x=end >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=6 /dev/null)' #cmdline asgn then file then read echo '0 end' >foo1 $awk 'BEGIN { x=0; getline <"/dev/null"; print x} END { print x }' x=7 /dev/null x=end >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=7 /dev/null)' #cmdline asgn then file then read; _ in commandname echo '0 end' >foo1 $awk 'BEGIN { _=0; getline <"/dev/null"; print _} END { print _ }' _=7A /dev/null _=end >foo2 diff foo1 foo2 || echo 'BAD: T.clv (_=7A /dev/null)' # illegal varname in commandname $awk '{ print }' 99_=foo /dev/null >foo 2>foo2 grep -s "can't open.*foo" foo2 || echo 'BAD: T.clv (7B: illegal varname)' # these test the new -v option: awk ... -v a=1 -v b=2 'prog' does before BEGIN echo 123 >foo1 $awk -v x=123 'BEGIN { print x }' >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=11)' echo 123 abc 10.99 >foo1 $awk -v x=123 -v y=abc -v z1=10.99 'BEGIN { print x, y, z1 }' >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=12)' echo 123 abc 10.99 >foo1 $awk -v x=123 -v y=abc -v z1=10.99 -- 'BEGIN { print x, y, z1 }' >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=12a)' echo 'BEGIN { print x, y, z1 }' >foo0 echo 123 abc 10.99 >foo1 $awk -v x=123 -v y=abc -f foo0 -v z1=10.99 >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=13)' echo 'BEGIN { print x, y, z1 }' >foo0 echo 123 abc 10.99 >foo1 $awk -f foo0 -v x=123 -v y=abc -v z1=10.99 >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=14)' echo 'BEGIN { print x, y, z1 }' >foo0 echo 123 abc 10.99 >foo1 $awk -f foo0 -v x=123 -v y=abc -v z1=10.99 >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=14a)' echo 'BEGIN { print x, y, z1 } END { print x }' >foo0 echo '123 abc 10.99 4567' >foo1 $awk -f foo0 -v x=123 -v y=abc -v z1=10.99 /dev/null x=4567 /dev/null >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=15)' echo 'BEGIN { print x, y, z1 } NR==1 { print x }' >foo0 echo '123 abc 10.99 4567' >foo1 $awk -v x=123 -v y=abc -v z1=10.99 -f foo0 x=4567 /etc/passwd >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=16)' # special chars in commandline assigned value echo 'a\\b\z' >foo1 echo 'hello' | $awk '{print x}' x='\141\\\\\142\\z' >foo2 diff foo1 foo2 || echo 'BAD: T.clv (x=17)' T.-f-f 685727380 9 1 100775 357 ` echo T.-f-f: check multiple -f arguments awk=${awk-../a.out} echo 'begin end' >foo echo 'BEGIN { print "begin" }' >foo1 echo 'END { print "end" }' >foo2 echo xxx | $awk -f foo1 -f foo2 >foo3 diff foo foo3 || echo 'BAD: T.-f-f multiple -fs' echo '/a/' | $awk -f - /etc/passwd >foo1 $awk '/a/' /etc/passwd >foo2 diff foo1 foo2 || echo 'BAD: T.-f-f -f -' p.table 685727380 9 1 100664 795 ` # table - simple table formatter BEGIN { FS = "\t"; blanks = sprintf("%100s", " ") number = "^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+)$" } { row[NR] = $0 for (i = 1; i <= NF; i++) { if ($i ~ number) nwid[i] = max(nwid[i], length($i)) wid[i] = max(wid[i], length($i)) } } END { for (r = 1; r <= NR; r++) { n = split(row[r], d) for (i = 1; i <= n; i++) { sep = (i < n) ? " " : "\n" if (d[i] ~ number) printf("%" wid[i] "s%s", numjust(i,d[i]), sep) else printf("%-" wid[i] "s%s", d[i], sep) } } } function max(x, y) { return (x > y) ? x : y } function numjust(n, s) { # position s in field n return s substr(blanks, 1, int((wid[n]-nwid[n])/2)) } t.strnum 685727380 9 1 100664 56 ` BEGIN { print 1E2 "", 12e-2 "", e12 "", 1.23456789 "" } p.21a 685727380 9 1 100664 19 ` /Asia/ || /Africa/ u.main 685727380 9 1 100664 479 ` BEGIN { print "bunch of commandline error messages follow\n" t = ARGV[0]; print "\n" t "\n"; system(t) # usage t = ARGV[0] " -f"; print "\n" t "\n"; system(t) # no program file t = ARGV[0] " -f /glop/glop"; print "\n" t "\n"; system(t) # program inaccessible t = ARGV[0] " -zzz"; print "\n" t "\n"; system(t) # weird option t = ARGV[0] " -F"; print "\n" t "\n"; system(t) # null FS t = ARGV[0] " -F :"; print "\n" t "\n"; system(t) # field sep but no program } xc 685727380 9 1 100777 414 ` for i in $* do echo $i >/dev/tty echo $i '<<<' cd .. echo testdir/$i: ind <testdir/$i a.out -f testdir/$i >drek.c cat drek.c make drek || ( echo $i ' ' bad compile; echo $i ' ' bad compile >/dev/tty; continue ) cd testdir time awk -f $i test.countries >foo1 time ../drek test.countries >foo2 cmp foo1 foo2 || ( echo $i ' ' bad; echo $i ' ' bad >/dev/tty; diff foo1 foo2 ) echo '>>>' $i echo done yc 685727380 9 1 100777 404 ` for i in $* do echo $i >/dev/tty echo $i '<<<' cd .. echo testdir/$i: ind <testdir/$i a.out -f testdir/$i >drek.c cat drek.c make drek || ( echo $i ' ' bad compile; echo $i ' ' bad compile >/dev/tty; continue ) cd testdir time awk -f $i test.data >foo1 time ../drek test.data >foo2 cmp foo1 foo2 || ( echo $i ' ' bad; echo $i ' ' bad >/dev/tty; diff foo1 foo2 ) echo '>>>' $i echo done T.expr 685727380 9 1 100775 2520 ` echo T.expr: tests of miscellaneous expressions awk=${awk-../a.out} $awk ' BEGIN { FS = "\t" awk = "../a.out" } NF == 0 || $1 ~ /^#/ { next } $1 ~ /try/ { # new test nt++ sub(/try /, "") prog = $0 printf("%3d %s\n", nt, prog) prog = sprintf("%s -Ft '"'"'%s'"'"'", awk, prog) # print "prog is", prog nt2 = 0 while (getline > 0) { if (NF == 0) # blank line terminates a sequence break input = $1 for (i = 2; i < NF; i++) # input data input = input "\t" $i test = sprintf("echo '"'"'%s'"'"' | %s >foo1; ", input, prog) if ($NF == "\"\"") output = ">foo2;" else output = sprintf("echo '"'"'%s'"'"' >foo2; ", $NF) gsub(/\\t/, "\t", output) gsub(/\\n/, "\n", output) run = sprintf("cmp foo1 foo2 || echo test %d.%d failed", nt, ++nt2) # print "input is", input # print "test is", test # print "output is", output # print "run is", run system(test output run) } tt += nt2 } END { print tt, "tests" } ' <<\!!! # General format: # try program as rest of line # $1 $1 $1 output1 (\t for tab, \n for newline, # $2 $2 $2 output2 ("" for null) # ... terminated by blank line # try another program... try $1 > 0 1 1 2 2 0 "" -1 "" 1e0 1e0 0e1 "" -2e64 "" 3.1e4 3.1e4 try { print NF } 0 x 1 x y 2 y 2 x 2 # this horror prints $($2+1) try { i=1; print ($++$++i) } 1 1 1 2 3 3 abc abc # concatenate $1 and ++$2; print new $1 and concatenated value try { x = $1++++$2; print $1, x } 1 3 2 14 # do we get the precedence of ! right? try $1 !$2 0 0 0\t0 0 1 0\t1 1 0 1\t0 1 1 1\t1 # another ava special try { print ($1~/abc/ !$2) } 0 0 01 0 1 00 abc 0 11 xabcd 1 10 try { print !$1 + $2 } 1 3 3 0 3 4 -1 3 3 # aside: !$1 = $2 is now a syntax error try { print ($1 == $2) } 0 0 1 0 1 0 0 00 1 0 "" 0 +0 -0 1 1 1.0 1 1 1e0 1 2e10 2.00e10 1 2e10 2e+10 1 2e-10 2e-10 1 2e10 2e-10 0 2e10 20e9 1 2e100 2.0e100 0 try { print $1, +$1, -$1, - -$1 } 1 1 1 -1 1 -1 -1 -1 1 -1 0 0 0 0 0 x x x 0 0 try { printf("a%*sb\n", $1, $2) } 1 x axb 2 x a xb 3 x a xb try { printf("%d %ld\n", $1, $1) } 1 1 1 10 10 10 10000 10000 10000 try { printf("%x %lx\n", $1, $1) } 1 1 1 10 a a 10000 2710 2710 try { if ($1 ~ $2) print 1; else print 0 } a \141 1 a \142 0 a \x61 1 a \x061 1 a \x62 0 0 \060 1 0 \60 1 0 \0060 0 Z \x5a 1 Z \x5A 1 try { print $1 ~ $2 } a \141 1 a \142 0 a \x61 1 a \x061 1 a \x62 0 0 \060 1 0 \60 1 0 \0060 0 Z \x5a 1 Z \x5A 1 try { print $1 || $2 } 0 1 1 0 0 0 1 0 1 0 1 1 1 1 1 a b 1 try { print $1 && $2 } 0 1 0 0 0 0 1 0 0 0 1 0 1 1 1 a b 1 t.8.y 685727380 9 1 100664 183 ` {$1=$2; print} # this should print nothing for an empty input line # since it has only referred to $2, not created it, # and thus only $1 exists (and it's null). # is this right??? t.NF 685727380 9 1 100664 79 ` { OFS = "|"; print NF; NF = 2; print NF; print; $5 = "five"; print NF; print } t.delete3 685727380 9 1 100664 99 ` { x[$1] = $1 delete x[$1] n = 0 for (i in x) n++ if (n != 0) print "error", n, "at", NR } t.coerce2 685727380 9 1 100664 127 ` { print index(1, $1) print substr(123456789, 1, 3) print 1 in x print 1 23 456 print 123456789 ~ 123, 123456789 ~ "abc" } t.delete1 685727380 9 1 100664 99 ` { split("1 1.2 abc", x) x[$1]++ delete x[1] delete x[1.2] delete x["abc"] delete x[$1] } ctimes 685727380 9 1 100777 654 ` awk ' BEGIN { OFS = "\t" print " new old new/old" print "" } /differ/ /:$/ { name = $1; cnt = 0; next } $1 ~ /u$/ && $2 ~ /s$/ && /a.out|drek/ { new += $1 + $2 cnt++ if (cnt == 2) dump() } $1 ~ /u$/ && $2 ~ /s$/ && !/(a.out|drek) / { old += $1 + $2 cnt++ if (cnt == 2) dump() } function dump() { if (old > 0) { printf "%8.1f %8.1f %8.3f %s\n", new, old, new/old, name rat += new/old } nrat++ totnew += new totold += old old = new = cnt = 0 } END { print "" printf "%8.1f %8.1f\n\n", totnew, totold printf "avg new/old = %.3f\n", rat/nrat printf "total new/old = %.3f\n", totnew/totold print nrat " tests" } ' $* t.for3 693862918 9 1 100664 101 ` { for (i = 1; length($i) > 0; i++) print i, $i } { for (i = 1; length($i) > 0; i++) print $i } Compare.drek 685727380 9 1 100777 703 ` # an arbitrary collection of input data cat td.1 td.1 >foo.td sed 's/^........................//' td.1 >>foo.td pr -m td.1 td.1 td.1 >>foo.td pr -2 td.1 >>foo.td wc foo.td td=foo.td >footot for i in $* do echo $i >/dev/tty echo $i '<<<' cd .. echo testdir/$i: ind <testdir/$i a.out -f testdir/$i >drek.c cat drek.c make drek || ( echo $i ' ' bad compile; echo $i ' ' bad compile >/dev/tty; continue ) cd testdir time /usr/bin/awk -f $i $td >foo2 2>foo2t cat foo2t time ../drek $td >foo1 2>foo1t cat foo1t cmp foo1 foo2 || ( echo $i ' ' bad; echo $i ' ' bad >/dev/tty; diff foo1 foo2 | sed 20q ) echo '>>>' $i echo echo $i: >>footot cat foo1t foo2t >>footot done ctimes footot T.main 693541858 9 1 100777 616 ` echo T.main: misc tests of arguments in main awk=${awk-../a.out} # test -d option echo hello | $awk -d '{print}' >foo1 grep -s 'awk .* 199[0-9]' foo1 || echo 'bad: awk -d' echo 'a::b::c' >foo $awk -F:: '{print NF}' foo >foo1 echo '3' >foo2 diff foo1 foo2 || echo 'bad: awk -F::' echo 'a::b::c' >foo $awk -F :: '{print NF}' foo >foo1 echo '3' >foo2 diff foo1 foo2 || echo 'bad: awk -F ::' echo 'a b c' >foo $awk -F t '{print NF}' foo >foo1 echo '3' >foo2 diff foo1 foo2 || echo 'bad: awk -F (tab)' echo 'atabbtabc' >foo $awk -F tab '{print NF}' foo >foo1 echo '3' >foo2 diff foo1 foo2 || echo 'bad: awk -F tab' t.getval 685727380 9 1 100666 92 ` { # tests various resetting of $1, $0, etc. $1 = length($1) + length($2) print $0 + 0 } T.overflow 707330843 9 1 100777 1410 ` echo T.overflow: test some overflow conditions awk=${awk-../a.out} ### $awk 'BEGIN { ### for (i = 0; i < 1000; i++) printf("abcdefghijklmnopqsrtuvwxyz") ### printf("\n") ### exit ### }' >foo1 ### $awk '{print}' foo1 >foo2 2>foo ### grep -s 'grew input record' foo >/dev/null || echo 'BAD: T.overflow input record 1' ### echo hello | $awk ' ### { for (i = 1; i < 500; i++) s = s "abcdefghijklmnopqsrtuvwxyz " ### $0 = s ### print $1 ### }' >/dev/null 2>foo ### grep -s 'grew number of fields' foo >/dev/null || echo 'BAD: T.overflow too many fields' # default input record 3072, fields 200: $awk ' BEGIN { for (j = 0; j < 2; j++) { for (i = 0; i < 500; i++) printf(" 123456789") printf("\n"); } } ' >foo1 $awk -mr 6000 -mf 600 '{$1 = " 123456789"; print}' foo1 >foo2 cmp -s foo1 foo2 || echo 'BAD: T.overflow -mr -mf set $1' $awk ' BEGIN { for (j = 0; j < 2; j++) { for (i = 0; i < 500; i++) printf(" 123456789") printf("\n"); } } ' >foo $awk -mr 6000 -mf 600 '{print NF}' foo >foo1 echo '500 500' >foo2 cmp -s foo1 foo2 || echo 'BAD: T.overflow -mr -mf NF' rm -f core # this should not drop core $awk 'BEGIN { for (i = 1; i < 1000; i++) s = s "a-z" if ("x" ~ "[" s "]") print "ugh" }' >foo 2>foo test -r core && echo 1>&2 "BAD: T.overflow too long char class dropped core" grep -s 'character class.*too long' foo >/dev/null || echo 'BAD: T.overflow too long char class' t.split4 685727380 9 1 100664 101 ` { a = $0 " " $0 " " $0 " " 123 n = split (a, x, /[ \t][ \t]*/) print n, x[1], x[2], x[3], x[4] } T.flags 685727380 9 1 100777 545 ` echo T.flags: test some commandline flags awk=${awk-../a.out} $awk >foo 2>&1 grep 'Usage' foo >/dev/null || echo 'T.flags: bad usage' $awk -f >foo 2>&1 grep 'no program' foo >/dev/null || echo 'T.flags: bad no program' $awk -f glop/glop >foo 2>&1 grep 'can.t open' foo >/dev/null || echo 'T.flags: bad can.t open program' $awk -zz 'BEGIN{}' >foo 2>&1 grep 'unknown option' foo >/dev/null || echo 'T.flags: bad unknown option' $awk -F >foo 2>&1 grep 'field separator.*empty' foo >/dev/null || echo 'T.flags: bad null field separator' tt.14 685727380 9 1 100666 172 ` function abs(x) { return (x < 0) ? -x : x } BEGIN { n = 1000 for (i = 1; i < n; i++) x[i] = rand() for (i in x) for (j in x) if (abs(x[i]-x[j]) < .01) break } tt.big 685727380 9 1 100666 869 ` { print } { print NR, NF, $0 } { $2 = length($2); print } { s += length($2) } END { print s } { s += $3 } END { print s } { for (i = NF; i > 0; i--) printf "%s ", $i printf("\n") } $1 == $1 && $2 == $2 # test some string compares $1 != $2 { sss = "" for (i = NF; i > 0; i--) sss = sss " " $i print sss } { xx[$1] += length } END { for (i in xx) print i, xx[i] | "sort" } NF % 2 == 0 length % 2 == 0 ! /^./ /.$/ BEGIN { xxx = ".$" } $0 ~ xxx { print substr($0, 10,10) } { $3 = "xxx" $3 "xxx"; $4--; print } { for (i = 1; i <= NF; i++) x[i] = $i for (i = 1; i <= NF; i++) print x[i] } { for (i = 1; i <= NF; i++) y[i] = $i for (i = 1; i <= NF; i++) printf "%d %s\n", i, y[i] } function abs(x) { return (x < 0) ? -x : x } BEGIN { n = 1000 for (i = 1; i < n; i++) x[i] = rand() for (i in x) for (j in x) if (abs(x[i]-x[j]) < .01) break } README.TESTS 685727380 9 1 100666 1705 ` The archive of test files contains - A shell file called REGRESS that controls the testing process. - Several shell files called Compare* that control sub-parts of the testing. - About 160 small tests called t.* that constitute a random sampling of awk constructions collected over the years. Not organized, but they touch almost everything. - About 60 small tests called p.* that come from the first two chapters of The AWK Programming Environment. This is basic stuff -- they have to work. These two sets are intended as regression tests, to be sure that a new version produces the same results as a previous one. There are a couple of standard data files used with them, test.data and test.countries, but others would work too. - About 20 files called T.* that are self-contained and more systematic tests of specific language features. For example, T.clv tests command-line variable handling. These tests are not regressions -- they compute the right answer by separate means, then compare the awk output. A specific test for each new bug found shows up in at least one of these, most often T.misc. - Two of these files, T.re and T.sub, are systematic tests of the regular expression and substitution code. They express tests in a small language, then generate awk programs that verify behavior. - About 20 files called tt.* that are used as timing tests; they use the most common awk constructions in straightforward ways, against a large input file constructed by Compare.tt. There is undoubtedly more stuff in the archive; it's been collecting for years and may need pruning. Suggestions for improvement, additional tests (especially systematic ones), and the like are all welcome.