Blame awklib/eg/prog/split.awk
|
Packit |
575503 |
# split.awk --- do split in awk
|
|
Packit |
575503 |
#
|
|
Packit |
575503 |
# Requires ord() and chr() library functions
|
|
Packit |
575503 |
#
|
|
Packit |
575503 |
# Arnold Robbins, arnold@skeeve.com, Public Domain
|
|
Packit |
575503 |
# May 1993
|
|
Packit |
575503 |
# Revised slightly, May 2014
|
|
Packit |
575503 |
|
|
Packit |
575503 |
# usage: split [-count] [file] [outname]
|
|
Packit |
575503 |
|
|
Packit |
575503 |
BEGIN {
|
|
Packit |
575503 |
outfile = "x" # default
|
|
Packit |
575503 |
count = 1000
|
|
Packit |
575503 |
if (ARGC > 4)
|
|
Packit |
575503 |
usage()
|
|
Packit |
575503 |
|
|
Packit |
575503 |
i = 1
|
|
Packit |
575503 |
if (i in ARGV && ARGV[i] ~ /^-[[:digit:]]+$/) {
|
|
Packit |
575503 |
count = -ARGV[i]
|
|
Packit |
575503 |
ARGV[i] = ""
|
|
Packit |
575503 |
i++
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
# test argv in case reading from stdin instead of file
|
|
Packit |
575503 |
if (i in ARGV)
|
|
Packit |
575503 |
i++ # skip datafile name
|
|
Packit |
575503 |
if (i in ARGV) {
|
|
Packit |
575503 |
outfile = ARGV[i]
|
|
Packit |
575503 |
ARGV[i] = ""
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
s1 = s2 = "a"
|
|
Packit |
575503 |
out = (outfile s1 s2)
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
{
|
|
Packit |
575503 |
if (++tcount > count) {
|
|
Packit |
575503 |
close(out)
|
|
Packit |
575503 |
if (s2 == "z") {
|
|
Packit |
575503 |
if (s1 == "z") {
|
|
Packit |
575503 |
printf("split: %s is too large to split\n",
|
|
Packit |
575503 |
FILENAME) > "/dev/stderr"
|
|
Packit |
575503 |
exit 1
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
s1 = chr(ord(s1) + 1)
|
|
Packit |
575503 |
s2 = "a"
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
s2 = chr(ord(s2) + 1)
|
|
Packit |
575503 |
out = (outfile s1 s2)
|
|
Packit |
575503 |
tcount = 1
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
print > out
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
function usage()
|
|
Packit |
575503 |
{
|
|
Packit |
575503 |
print("usage: split [-num] [file] [outname]") > "/dev/stderr"
|
|
Packit |
575503 |
exit 1
|
|
Packit |
575503 |
}
|