#!/usr/bin/env ruby require 'optimist' STDIN.set_encoding 'utf-8' STDOUT.set_encoding 'utf-8' conf = Optimist::options do banner "splitpipes -f < " 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