From 8c042f99cc7465c86351d21331a129111b75345d Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Fri, 16 Jul 2010 12:41:09 +0300 Subject: Move to gawk-3.0.0. --- awklib/eg/prog/split.awk | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 awklib/eg/prog/split.awk (limited to 'awklib/eg/prog/split.awk') diff --git a/awklib/eg/prog/split.awk b/awklib/eg/prog/split.awk new file mode 100644 index 00000000..e48653b4 --- /dev/null +++ b/awklib/eg/prog/split.awk @@ -0,0 +1,54 @@ +# 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 +} -- cgit v1.2.3