54 lines
1.1 KiB
Awk
54 lines
1.1 KiB
Awk
|
# split.awk --- do split in awk
|
||
|
# Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
|
||
|
# May 1993
|
||
|
|
||
|
# usage: split [-num] [file] [outname]
|
||
|
|
||
|
BEGIN {
|
||
|
outfile = "x" # default
|
||
|
count = 1000
|
||
|
if (ARGC > 4)
|
||
|
usage()
|
||
|
|
||
|
i = 1
|
||
|
if (ARGV[i] ~ /^-[0-9]+$/) {
|
||
|
count = -ARGV[i]
|
||
|
ARGV[i] = ""
|
||
|
i++
|
||
|
}
|
||
|
# test argv in case reading from stdin instead of file
|
||
|
if (i in ARGV)
|
||
|
i++ # skip data file name
|
||
|
if (i in ARGV) {
|
||
|
outfile = ARGV[i]
|
||
|
ARGV[i] = ""
|
||
|
}
|
||
|
|
||
|
s1 = s2 = "a"
|
||
|
out = (outfile s1 s2)
|
||
|
}
|
||
|
{
|
||
|
if (++tcount > count) {
|
||
|
close(out)
|
||
|
if (s2 == "z") {
|
||
|
if (s1 == "z") {
|
||
|
printf("split: %s is too large to split\n", \
|
||
|
FILENAME) > "/dev/stderr"
|
||
|
exit 1
|
||
|
}
|
||
|
s1 = chr(ord(s1) + 1)
|
||
|
s2 = "a"
|
||
|
} else
|
||
|
s2 = chr(ord(s2) + 1)
|
||
|
out = (outfile s1 s2)
|
||
|
tcount = 1
|
||
|
}
|
||
|
print > out
|
||
|
}
|
||
|
function usage( e)
|
||
|
{
|
||
|
e = "usage: split [-num] [file] [outname]"
|
||
|
print e > "/dev/stderr"
|
||
|
exit 1
|
||
|
}
|