revised project information and added more test scripts for awk
This commit is contained in:
@ -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@
|
||||
|
@ -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 \
|
||||
|
@ -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 \
|
||||
|
31
qse/regress/awk/columnate.awk
Normal file
31
qse/regress/awk/columnate.awk
Normal 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
|
||||
|
30
qse/regress/awk/levenshtein-utests.awk
Normal file
30
qse/regress/awk/levenshtein-utests.awk
Normal 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)
|
||||
}
|
||||
|
108
qse/regress/awk/levenshtein.awk
Normal file
108
qse/regress/awk/levenshtein.awk
Normal 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 <a.t> gmail.com
|
103
qse/regress/awk/rcalc.awk
Normal file
103
qse/regress/awk/rcalc.awk
Normal 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 <http://bugsplatter.id.au> GPLv2
|
||||
|
@ -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
|
||||
--------------------------------------------------------------------------------
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user