revised project information and added more test scripts for awk

This commit is contained in:
2009-12-14 01:44:50 +00:00
parent 689fb93301
commit 0d83bdba2c
48 changed files with 639 additions and 584 deletions

View File

@ -156,6 +156,8 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
QSE_PROJECT_AUTHOR = @QSE_PROJECT_AUTHOR@
QSE_PROJECT_URL = @QSE_PROJECT_URL@
QSE_SIZEOF_CHAR = @QSE_SIZEOF_CHAR@
QSE_SIZEOF_DOUBLE = @QSE_SIZEOF_DOUBLE@
QSE_SIZEOF_FLOAT = @QSE_SIZEOF_FLOAT@

View File

@ -95,11 +95,28 @@ EXTRA_DIST = \
lang-031.awk \
lang-032.awk \
lang-033.awk \
lang-034.awk \
lang-035.awk \
lang-036.awk \
lang-037.awk \
lang-038.awk \
lang-039.awk \
lang-040.awk \
lang-041.awk \
lang-042.awk \
columnate.awk \
levenshtein.awk \
levenshtein-utests.awk \
rcalc.awk \
quicksort2.awk \
quicksort.awk \
stripcomment.awk \
unr-001.awk \
wordfreq.awk \
lang-035.dat1 \
lang-035.dat2 \
lang-036.dat \
lang-037.dat \
adr.dat \
asm.dat \
cou.dat \

View File

@ -118,6 +118,8 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
QSE_PROJECT_AUTHOR = @QSE_PROJECT_AUTHOR@
QSE_PROJECT_URL = @QSE_PROJECT_URL@
QSE_SIZEOF_CHAR = @QSE_SIZEOF_CHAR@
QSE_SIZEOF_DOUBLE = @QSE_SIZEOF_DOUBLE@
QSE_SIZEOF_FLOAT = @QSE_SIZEOF_FLOAT@
@ -285,11 +287,28 @@ EXTRA_DIST = \
lang-031.awk \
lang-032.awk \
lang-033.awk \
lang-034.awk \
lang-035.awk \
lang-036.awk \
lang-037.awk \
lang-038.awk \
lang-039.awk \
lang-040.awk \
lang-041.awk \
lang-042.awk \
columnate.awk \
levenshtein.awk \
levenshtein-utests.awk \
rcalc.awk \
quicksort2.awk \
quicksort.awk \
stripcomment.awk \
unr-001.awk \
wordfreq.awk \
lang-035.dat1 \
lang-035.dat2 \
lang-036.dat \
lang-037.dat \
adr.dat \
asm.dat \
cou.dat \

View File

@ -0,0 +1,31 @@
#.H1 Columnate
#.H2 Synopsis
#.PRE
##e.g.
#gawk -F: -f columnate.awk /etc/passwd
#./PRE
#.H2 Download
#Download from
#.URL http://lawker.googlecode.com/svn/fridge/lib/awk/columnate.awk LAWKER.
#.H2 About
#This script columnates the input file, so that columns line up like in the GNU column(1) command. Its output is like that of column -t. First, awk reads the whole file, keeps track of the maximum width of each field, and saves all the lines/records. At the END, the lines are printed in columnated format. If your terminal is not too narrow, you'll get a handsome display of the file.
#.H2 Code
#.PRE
{ line[NR] = $0 # saves the line
for (f=1; f<=NF; f++) {
len = length($f)
if (len>max[f])
max[f] = len } # an array of maximum field widths
}
END {
for(nr=1; nr<=NR; nr++) {
nf = split(line[nr], fields)
for (f=1; f<nf; f++)
printf "%-*s", max[f]+2, fields[f]
print fields[f] } # the last field need not be padded
}
#./PRE
#.H2 Author
#.P
# h-67-101-152-180.nycmny83.dynamic.covad.net

View File

@ -0,0 +1,30 @@
#utests.awk
#author pierre.gaston <a.t> gmail.com
@include "levenshtein.awk"
function testlevdist(str1, str2, correctval, testval) {
testval = levdist(str1, str2)
if (testval == correctval) {
printf "%s:\tCorrect distance between '%s' and '%s'\n", testval, str1, str2
return 1
} else {
print "MISMATCH on words '%s' and '%s' (wanted %s, got %s)\n", str1, str2, correctval, testval
return 0
}
}
BEGIN {
testlevdist("kitten", "sitting", 3)
testlevdist("Saturday", "Sunday", 3)
testlevdist("acc", "ac", 1)
testlevdist("foo", "four", 2)
testlevdist("foo", "foo", 0)
testlevdist("cow", "cat", 2)
testlevdist("cat", "moocow", 5)
testlevdist("cat", "cowmoo", 5)
testlevdist("sebastian", "sebastien", 1)
testlevdist("more", "cowbell", 5)
testlevdist("freshpack", "freshpak", 1)
testlevdist("freshpak", "freshpack", 1)
}

View File

@ -0,0 +1,108 @@
#.H1 levenshtein.awk
#.H2 Synopsis
#.PRE
#gawk -f levenshtein.awk --source 'BEGIN {
# print levdist("kitten", "sitting")}'
#./PRE
#.P (The above code should print "3").
#.H2 Download
#.P
#Download from
#.URL http://lawker.googlecode.com/svn/fridge/lib/awk/levenshtein.awk LAWKER.
#.H2 Notes
#.P
#The Levenshtein edit distance calculation is useful for comparing text strings for similarity, such as would be done with a spell checker.
#.P
#Hi_saito (from awk.freeshell.org) has written what looks like a straightforward implementation of the reference algorithm described in the above-linked Wikipedia article. hi_saito's code is linked to rather than included outright because no licensing terms appear on the page.
#.P
#Gnomon (from awk.freeshell.org) is planning to write a more compact (and hopefully speedier) implementation that will appear here soon. The plan is to compute and retain only those values that are necessary to calculate the edit distance, rather than calculating the entire NxM? matrix. The lazy-evaluation method, which can post substantial speed improvements, probably requires more effort and code complexity than the performance gains would be worth; still, for short strings, the lazy code could perhaps be modeled via recursion by executing from the end of the string rather than the beginning. If experiments are run, the results will also appear here.
#.P
#Here is the abovementioned streamlined implementation. There were eleven previous versions, all of which were benchmarked across gawk, mawk and busybox awk. The approaches started with a naive implementation and explored table-based, recursive (with no, single and shared memoization) and lazy models. As expected, the lazy version was incredibly fiddly and not pleasant to read or pursue. Findings will appear here later, but for now, here's the code.
#.H2 Code
#.H3 levdist
#.SMALL
#.PRE
function levdist(str1, str2, l1, l2, tog, arr, i, j, a, b, c) {
if (str1 == str2) {
return 0
} else if (str1 == "" || str2 == "") {
return length(str1 str2)
} else if (substr(str1, 1, 1) == substr(str2, 1, 1)) {
a = 2
while (substr(str1, a, 1) == substr(str2, a, 1)) a++
return levdist(substr(str1, a), substr(str2, a))
} else if (substr(str1, l1=length(str1), 1) == substr(str2, l2=length(str2), 1)) {
b = 1
while (substr(str1, l1-b, 1) == substr(str2, l2-b, 1)) b++
return levdist(substr(str1, 1, l1-b), substr(str2, 1, l2-b))
}
for (i = 0; i <= l2; i++) arr[0, i] = i
for (i = 1; i <= l1; i++) {
arr[tog = ! tog, 0] = i
for (j = 1; j <= l2; j++) {
a = arr[! tog, j ] + 1
b = arr[ tog, j-1] + 1
c = arr[! tog, j-1] + (substr(str1, i, 1) != substr(str2, j, 1))
arr[tog, j] = (((a<=b)&&(a<=c)) ? a : ((b<=a)&&(b<=c)) ? b : c)
}
}
return arr[tog, j-1]
}
#./PRE
#./SMALL
#.H3 Demo code
#.P
#Run demo.awk using <em>gawk -f levenshtein.awk -f demo.awk</em>.
#.PRE
##demo.awk
#BEGIN {OFS = "\t"}
#{words[NR] = $0}
#END {
# max = 0
# for (i = 2; i in words; i++) {
# for (j = i + 1; j in words; j++) {
# new = levdist(words[i], words[j])
# print words[i], words[j], new
# if (new > max) {
# max = new
# bestpair = (words[i] " - " words[j] ": " new)
# }
# }
# }
# print bestpair
#}
#./PRE
#.H3 Unit tests
#.P
#Run utests.awk using <em>gawk -f levenshtein.awk -f utests.awk</em>.
#.SMALL
#.PRE
##utests.awk
#function testlevdist(str1, str2, correctval, testval) {
# testval = levdist(str1, str2)
# if (testval == correctval) {
# printf "%s:\tCorrect distance between '%s' and '%s'\n", testval, str1, str2
# return 1
# } else {
# print "MISMATCH on words '%s' and '%s' (wanted %s, got %s)\n", str1, str2, correctval, testval
# return 0
# }
#}
#BEGIN {
# testlevdist("kitten", "sitting", 3)
# testlevdist("Saturday", "Sunday", 3)
# testlevdist("acc", "ac", 1)
# testlevdist("foo", "four", 2)
# testlevdist("foo", "foo", 0)
# testlevdist("cow", "cat", 2)
# testlevdist("cat", "moocow", 5)
# testlevdist("cat", "cowmoo", 5)
# testlevdist("sebastian", "sebastien", 1)
# testlevdist("more", "cowbell", 5)
# testlevdist("freshpack", "freshpak", 1)
# testlevdist("freshpak", "freshpack", 1)
#}
#./PRE
#./SMALL
#.H2 Author
#.P pierre.gaston &lt;a.t> gmail.com

103
qse/regress/awk/rcalc.awk Normal file
View File

@ -0,0 +1,103 @@
#.H1 rcalc
#.H2 Synposis
#.PRE
##eg
# gawk -v target=89000 -f rcalc.awk
#./PRE
#.H2 Download
#.P
#Download from
#.URL http://lawker.googlecode.com/svn/fridge/lib/awk/rcalc.awk LAWKER.
#.H2 About
#.P
# Calculate resistor pair value from e24 series to make up arbitrary value
#.P
# When designing and building electronic projects I mostly use 1% resistors
# that come in the E24 series (24 values per decade).
#.P
# Frequently there's a need for some arbitrary value (between 10R and 1M
# in this script) resistor that can be made with a series or parallel
# combination of two standard values.
#.P
# This script searches the E24 standard value space for pairs of resistors
# that will produce or come close to the desired arbitrary resistor value.
#.H2 Example
#.PRE
#$ gawk -v target=89000 -f rcalc.awk
# Result Ra Rb Connect Error
# 88800.00 82000 6800 series -0.22%
# 88888.89 200000 160000 parallel -0.12%
# 89000.00 56000 33000 series
# 89000.00 62000 27000 series
# 89130.43 820000 100000 parallel +0.15%
# 89137.93 470000 110000 parallel +0.15%
# 89189.19 220000 150000 parallel +0.21%
#./PRE
#.H2 Code
#.SMALL
#.PRE
BEGIN {
print "Result Ra Rb Connect Error"
max_error = 0.005 # +/- 0.5%
max_multiplier = 10000 # try four decades
format = "%8.2f %7d %7d %-8s %+4.2f%%"
formnz = "%8.2f %7d %7d %-8s"
limit_hi = target * (1 + max_error)
limit_lo = target * (1 - max_error)
$0 = "10 11 12 13 15 16 18 20 22 24 27 30 33 36 39 43 47 51 56 62 68 75 82 91"
for (i = 1; i < 25; i++) {
e24[i] = $i
}
for (u = 1; u < 25; u++) {
for (v = 1; v < 25; v++) {
for (i = 1; i <= max_multiplier; i *= 10) {
x = e24[u] * i
if (x == target) {
continue
}
for (j = 1; j <= max_multiplier; j *= 10) {
y = e24[v] * j
if (y == target) {
continue
}
combo(e24[u] * i, e24[v] * j)
}
}
}
}
exit # skip file reader
}
function combo(a, b, c) {
# parallel
c = a * b / (a + b)
combo2(a, b, c, "parallel")
# series
c = a + b
combo2(a, b, c, "series")
}
function combo2(a, b, c, d, e, f) {
# avoid duplicates and ignore result when error too big
if (a < b || c < limit_lo || c > limit_hi) { return }
e = 100 * (c - target) / target # percentage error
f = (e == 0 ? formnz : format) # select output format
result[n++] = sprintf(f, c, a, b, d, e)
}
END {
# sort by result value, print list
# n = asort(result, sort_result)
for (i = 1; i <= n; i++) {
# print sort_result[i]
print result[i] | "sort"
}
}
#./PRE
#./SMALL
#.H2 Author
#.P
# Copyright (c) 2009 Grant Coady &lt;http://bugsplatter.id.au> GPLv2

View File

@ -2086,6 +2086,71 @@ IGNORECASE= 1
1
1
1
--------------------------------------------------------------------------------
../../cmd/awk/.libs/qseawk --newline=on -F: -f columnate.awk /etc/passwd </dev/stdin 2>&1
--------------------------------------------------------------------------------
root x 0 0 root /root /bin/bash
daemon x 1 1 daemon /usr/sbin /bin/sh
bin x 2 2 bin /bin /bin/sh
sys x 3 3 sys /dev /bin/sh
sync x 4 65534 sync /bin /bin/sync
games x 5 60 games /usr/games /bin/sh
man x 6 12 man /var/cache/man /bin/sh
lp x 7 7 lp /var/spool/lpd /bin/sh
mail x 8 8 mail /var/mail /bin/sh
news x 9 9 news /var/spool/news /bin/sh
uucp x 10 10 uucp /var/spool/uucp /bin/sh
proxy x 13 13 proxy /bin /bin/sh
www-data x 33 33 www-data /var/www /bin/sh
backup x 34 34 backup /var/backups /bin/sh
list x 38 38 Mailing List Manager /var/list /bin/sh
irc x 39 39 ircd /var/run/ircd /bin/sh
gnats x 41 41 Gnats Bug-Reporting System (admin) /var/lib/gnats /bin/sh
nobody x 65534 65534 nobody /nonexistent /bin/sh
libuuid x 100 101 /var/lib/libuuid /bin/sh
syslog x 101 102 /home/syslog /bin/false
klog x 102 103 /home/klog /bin/false
hplip x 103 7 HPLIP system user,,, /var/run/hplip /bin/false
avahi-autoipd x 104 110 Avahi autoip daemon,,, /var/lib/avahi-autoipd /bin/false
gdm x 105 111 Gnome Display Manager /var/lib/gdm /bin/false
saned x 106 113 /home/saned /bin/false
pulse x 107 114 PulseAudio daemon,,, /var/run/pulse /bin/false
messagebus x 108 117 /var/run/dbus /bin/false
polkituser x 109 118 PolicyKit,,, /var/run/PolicyKit /bin/false
avahi x 110 119 Avahi mDNS daemon,,, /var/run/avahi-daemon /bin/false
haldaemon x 111 120 Hardware abstraction layer,,, /var/run/hald /bin/false
hyung-hwan x 1000 1000 hyung-hwan chung,,, /home/hyung-hwan /bin/bash
statd x 112 65534 /var/lib/nfs /bin/false
sshd x 113 65534 /var/run/sshd /usr/sbin/nologin
speech-dispatcher x 114 29 Speech Dispatcher,,, /var/run/speech-dispatcher /bin/sh
couchdb x 115 116 CouchDB Administrator,,, /var/lib/couchdb /bin/bash
kernoops x 116 65534 Kernel Oops Tracking Daemon,,, / /bin/false
--------------------------------------------------------------------------------
../../cmd/awk/.libs/qseawk --newline=on --include=on -f levenshtein-utests.awk </dev/stdin 2>&1
--------------------------------------------------------------------------------
3: Correct distance between 'kitten' and 'sitting'
3: Correct distance between 'Saturday' and 'Sunday'
1: Correct distance between 'acc' and 'ac'
2: Correct distance between 'foo' and 'four'
0: Correct distance between 'foo' and 'foo'
2: Correct distance between 'cow' and 'cat'
5: Correct distance between 'cat' and 'moocow'
5: Correct distance between 'cat' and 'cowmoo'
1: Correct distance between 'sebastian' and 'sebastien'
5: Correct distance between 'more' and 'cowbell'
1: Correct distance between 'freshpack' and 'freshpak'
1: Correct distance between 'freshpak' and 'freshpack'
--------------------------------------------------------------------------------
../../cmd/awk/.libs/qseawk --newline=on -v target=89000 -f rcalc.awk </dev/stdin 2>&1
--------------------------------------------------------------------------------
Result Ra Rb Connect Error
88800.00 82000 6800 series -0.22%%
89000.00 56000 33000 series
89000.00 62000 27000 series
89130.43 820000 100000 parallel +0.15%%
89137.93 470000 110000 parallel +0.15%%
89189.19 220000 150000 parallel +0.21%%
--------------------------------------------------------------------------------
../../cmd/awk/.libs/qseawk -f quicksort.awk quicksort.dat </dev/stdin 2>&1
--------------------------------------------------------------------------------

View File

@ -49,118 +49,121 @@ TMPFILE="${TMPFILE:=./regress.temp}"
OUTFILE="${OUTFILE:=./regress.out}"
PROGS="
cou-001.awk/cou.dat//
cou-002.awk/cou.dat//
cou-003.awk/cou.dat//
cou-004.awk/cou.dat//
cou-005.awk/cou.dat//
cou-006.awk/cou.dat//
cou-007.awk/cou.dat//
cou-008.awk/cou.dat//
cou-009.awk/cou.dat//
cou-010.awk/cou.dat//
cou-011.awk/cou.dat//
cou-012.awk/cou.dat//
cou-013.awk/cou.dat//
cou-014.awk/cou.dat//
cou-015.awk/cou.dat//
cou-016.awk/cou.dat//
cou-017.awk/cou.dat//
cou-018.awk/cou.dat//
cou-019.awk/cou.dat//
cou-020.awk/cou.dat//
cou-021.awk/cou.dat//
cou-022.awk/cou.dat//
cou-023.awk/cou.dat//
cou-024.awk/cou.dat//
cou-025.awk/cou.dat//
cou-026.awk/cou.dat//
cou-027.awk/cou.dat//
cou-001.awk!cou.dat!!
cou-002.awk!cou.dat!!
cou-003.awk!cou.dat!!
cou-004.awk!cou.dat!!
cou-005.awk!cou.dat!!
cou-006.awk!cou.dat!!
cou-007.awk!cou.dat!!
cou-008.awk!cou.dat!!
cou-009.awk!cou.dat!!
cou-010.awk!cou.dat!!
cou-011.awk!cou.dat!!
cou-012.awk!cou.dat!!
cou-013.awk!cou.dat!!
cou-014.awk!cou.dat!!
cou-015.awk!cou.dat!!
cou-016.awk!cou.dat!!
cou-017.awk!cou.dat!!
cou-018.awk!cou.dat!!
cou-019.awk!cou.dat!!
cou-020.awk!cou.dat!!
cou-021.awk!cou.dat!!
cou-022.awk!cou.dat!!
cou-023.awk!cou.dat!!
cou-024.awk!cou.dat!!
cou-025.awk!cou.dat!!
cou-026.awk!cou.dat!!
cou-027.awk!cou.dat!!
emp-001.awk/emp.dat//
emp-002.awk/emp.dat//
emp-003.awk/emp.dat//
emp-004.awk/emp.dat//
emp-005.awk/emp.dat//
emp-006.awk/emp.dat//
emp-007.awk/emp.dat//
emp-008.awk/emp.dat//
emp-009.awk/emp.dat//
emp-010.awk/emp.dat//
emp-011.awk/emp.dat//
emp-012.awk/emp.dat//
emp-013.awk/emp.dat//
emp-014.awk/emp.dat//
emp-015.awk/emp.dat//
emp-016.awk/emp.dat//
emp-017.awk/emp.dat//
emp-018.awk/emp.dat//
emp-019.awk/emp.dat//
emp-020.awk/emp.dat//
emp-021.awk/emp.dat//
emp-022.awk/emp.dat//
emp-023.awk/emp.dat//
emp-024.awk/emp.dat//
emp-025.awk/emp.dat//
emp-026.awk/emp.dat//
emp-027.awk/emp.dat//
emp-001.awk!emp.dat!!
emp-002.awk!emp.dat!!
emp-003.awk!emp.dat!!
emp-004.awk!emp.dat!!
emp-005.awk!emp.dat!!
emp-006.awk!emp.dat!!
emp-007.awk!emp.dat!!
emp-008.awk!emp.dat!!
emp-009.awk!emp.dat!!
emp-010.awk!emp.dat!!
emp-011.awk!emp.dat!!
emp-012.awk!emp.dat!!
emp-013.awk!emp.dat!!
emp-014.awk!emp.dat!!
emp-015.awk!emp.dat!!
emp-016.awk!emp.dat!!
emp-017.awk!emp.dat!!
emp-018.awk!emp.dat!!
emp-019.awk!emp.dat!!
emp-020.awk!emp.dat!!
emp-021.awk!emp.dat!!
emp-022.awk!emp.dat!!
emp-023.awk!emp.dat!!
emp-024.awk!emp.dat!!
emp-025.awk!emp.dat!!
emp-026.awk!emp.dat!!
emp-027.awk!emp.dat!!
adr-001.awk/adr.dat//
adr-002.awk/adr.dat//
adr-001.awk!adr.dat!!
adr-002.awk!adr.dat!!
unr-001.awk/unr.dat//
unr-001.awk!unr.dat!!
lang-001.awk///--strictnaming=off --newline=on -o-
lang-002.awk///--newline=on -o-
lang-003.awk///--newline=on -o-
lang-004.awk///--newline=on -o-
lang-005.awk///--implicit=off --explicit=on --newline=on -o-
lang-006.awk///--implicit=off --explicit=on --newline=on -o-
lang-007.awk///--implicit=on --explicit=on --newline=on -o-
lang-008.awk///--implicit=off --explicit=on --newline=on -o-
lang-009.awk/lang-009.awk//--implicit=off --explicit=on --newline=on --strictnaming=off -o-
lang-010.awk/this is just a test//--newline=on -o-
lang-011.awk///--newline=on -o-
lang-012.awk///--newline=on -o-
lang-013.awk///--newline=on -o-
lang-014.awk///--newline=on -o-
lang-015.awk///--newline=on -o-
lang-016.awk///--newline=on -o-
lang-017.awk///--newline=on -o-
lang-017.awk///--call main --newline=on -o-
lang-018.awk///--explicit=on --newline=on -o-
lang-019.awk///--explicit=on --newline=on -o-
lang-020.awk///--explicit=on --newline=on -o-
lang-021.awk///--explicit=on --newline=on -o-
lang-022.awk///--newline=on -o-
lang-023.awk///--explicit=on --newline=on -o-
lang-024.awk///--explicit=on --newline=on -o-
lang-025.awk///--newline=on -o-
lang-026.awk///--newline=on -o-
lang-027.awk///--newline=on -o-
lang-028.awk///--newline=on -o-
lang-029.awk///--explicit=on --newline=on -o-
lang-030.awk///--newline=on -o-
lang-031.awk///--newline=on -o-
lang-032.awk///--newline=on -o-
lang-033.awk///--newline=on -o-
lang-034.awk///--newline=on --rwpipe=on -o-
lang-035.awk/lang-035.dat2//--newline=on -o- -vdatafile=lang-035.dat1 -vgroupname=lang-035
lang-036.awk/lang-036.dat//--newline=on -o-
lang-037.awk/lang-037.dat//--newline=on -o-
lang-038.awk///--newline=on -o-
lang-039.awk///--newline=on -o-
lang-040.awk///--newline=on -o-
lang-041.awk///--newline=on -o-
lang-042.awk///--newline=on -o-
lang-001.awk!!!--strictnaming=off --newline=on -o-
lang-002.awk!!!--newline=on -o-
lang-003.awk!!!--newline=on -o-
lang-004.awk!!!--newline=on -o-
lang-005.awk!!!--implicit=off --explicit=on --newline=on -o-
lang-006.awk!!!--implicit=off --explicit=on --newline=on -o-
lang-007.awk!!!--implicit=on --explicit=on --newline=on -o-
lang-008.awk!!!--implicit=off --explicit=on --newline=on -o-
lang-009.awk!lang-009.awk!!--implicit=off --explicit=on --newline=on --strictnaming=off -o-
lang-010.awk!this is just a test!!--newline=on -o-
lang-011.awk!!!--newline=on -o-
lang-012.awk!!!--newline=on -o-
lang-013.awk!!!--newline=on -o-
lang-014.awk!!!--newline=on -o-
lang-015.awk!!!--newline=on -o-
lang-016.awk!!!--newline=on -o-
lang-017.awk!!!--newline=on -o-
lang-017.awk!!!--call main --newline=on -o-
lang-018.awk!!!--explicit=on --newline=on -o-
lang-019.awk!!!--explicit=on --newline=on -o-
lang-020.awk!!!--explicit=on --newline=on -o-
lang-021.awk!!!--explicit=on --newline=on -o-
lang-022.awk!!!--newline=on -o-
lang-023.awk!!!--explicit=on --newline=on -o-
lang-024.awk!!!--explicit=on --newline=on -o-
lang-025.awk!!!--newline=on -o-
lang-026.awk!!!--newline=on -o-
lang-027.awk!!!--newline=on -o-
lang-028.awk!!!--newline=on -o-
lang-029.awk!!!--explicit=on --newline=on -o-
lang-030.awk!!!--newline=on -o-
lang-031.awk!!!--newline=on -o-
lang-032.awk!!!--newline=on -o-
lang-033.awk!!!--newline=on -o-
lang-034.awk!!!--newline=on --rwpipe=on -o-
lang-035.awk!lang-035.dat2!!--newline=on -o- -vdatafile=lang-035.dat1 -vgroupname=lang-035
lang-036.awk!lang-036.dat!!--newline=on -o-
lang-037.awk!lang-037.dat!!--newline=on -o-
lang-038.awk!!!--newline=on -o-
lang-039.awk!!!--newline=on -o-
lang-040.awk!!!--newline=on -o-
lang-041.awk!!!--newline=on -o-
lang-042.awk!!!--newline=on -o-
quicksort.awk/quicksort.dat//
quicksort2.awk/quicksort2.dat//
asm.awk/asm.s/asm.dat/
stripcomment.awk/stripcomment.dat//
wordfreq.awk/wordfreq.awk//
hanoi.awk///
indent.awk/indent.dat//
columnate.awk!/etc/passwd!!--newline=on -F:
levenshtein-utests.awk!!!--newline=on --include=on
rcalc.awk!!!--newline=on -v target=89000
quicksort.awk!quicksort.dat!!
quicksort2.awk!quicksort2.dat!!
asm.awk!asm.s!asm.dat!
stripcomment.awk!stripcomment.dat!!
wordfreq.awk!wordfreq.awk!!
hanoi.awk!!!
indent.awk!indent.dat!!
"
[ -x "${QSEAWK}" ] ||
@ -178,10 +181,10 @@ run_scripts()
do
[ -z "${prog}" ] && continue
script="`echo ${prog} | cut -d/ -f1`"
datafile="`echo ${prog} | cut -d/ -f2`"
redinfile="`echo ${prog} | cut -d/ -f3`"
awkopts="`echo ${prog} | cut -d/ -f4`"
script="`echo ${prog} | cut -d! -f1`"
datafile="`echo ${prog} | cut -d! -f2`"
redinfile="`echo ${prog} | cut -d! -f3`"
awkopts="`echo ${prog} | cut -d! -f4`"
orgscript="${script}"
[ -z "${script}" ] && continue