diff options
author | Patrick Simianer <p@simianer.de> | 2016-07-05 11:01:46 +0200 |
---|---|---|
committer | Patrick Simianer <p@simianer.de> | 2016-07-05 11:01:46 +0200 |
commit | 2b1d7f881c19c4d4b5afae194e02d3300c7675d0 (patch) | |
tree | 5a06ee7de98640a39244b57bb369697176b44ebf /split-pipes | |
parent | 69949dda35c3ea21d8e926e5f0a596a0a0f61c6a (diff) |
mv
Diffstat (limited to 'split-pipes')
-rwxr-xr-x | split-pipes | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/split-pipes b/split-pipes new file mode 100755 index 0000000..ce8f018 --- /dev/null +++ b/split-pipes @@ -0,0 +1,51 @@ +#!/usr/bin/env ruby + +require 'trollop' + +STDIN.set_encoding 'utf-8' +STDOUT.set_encoding 'utf-8' + +conf = Trollop::options do + banner "splitpipes -f <n> < <input>" + opt :field, "field", :type => :int, :required => true + opt :to, "to", :type => :int, :default => nil +end + + +a = [] +range = false +if conf[:to] + range = true +end + +if range + if conf[:field] >= conf[:to] + STDERR.write "field >= to, exiting\n" + exit + end +end + +if conf[:field]<=0 || (range && conf[:to]<=0) + STDERR.write "field or to <= 0, exiting" + exit +end + +while line = STDIN.gets + j = 1 + line.strip.split(' ||| ').each { |i| + if range && (conf[:field]..conf[:to]).include?(j) + a << i.strip + elsif j == conf[:field] + puts i.strip + break + end + j += 1 + } + if range + puts "#{a.join " ||| "}\n" + end + a.clear +end + + + |