Sha256: 1f3e122c19f0dc808741979a59b418ba25d1887422a814f6a3511254ea75c92f

Contents?: true

Size: 1.51 KB

Versions: 179

Compression:

Stored size: 1.51 KB

Contents

#!/usr/bin/env ruby

require 'rbbt-util'
require 'rbbt/util/simpleopt'

options = SOPT.setup <<EOF

Query a TSV value

$ rbbt tsv get [options] <filename.tsv|-> <key>

Use - to read from STDIN

-tch--tokyocabinet File is a tokyocabinet hash database
-tcb--tokyocabinet_bd File is a tokyocabinet B database
-f--fields* Fields to extract
-k--key_field* Use this field as key
-h--help Print this help
-l--lines Separate in lines
-t--type* Type of tsv
EOF

rbbt_usage and exit 0 if options[:help]

file, key = ARGV

raise ParameterException, "Please specify file and key" if key.nil?

file = STDIN if file == '-'

case
when options[:tokyocabinet]
  tsv = Persist.open_tokyocabinet(file, false)
when options[:tokyocabinet_bd]
  tsv = Persist.open_tokyocabinet(file, false, nil, TokyoCabinet::BDB)
else
  if String === file
    file = file.dup
    Path.setup(File.expand_path(file))
  end
  tsv = file
end

fields = options[:fields]
key_field = options[:key_field]
fields = fields.split(/[,|]/, -1) unless fields.nil?

parser = TSV::Parser.new tsv, :key_field => key_field,  :fields => fields, :type => options[:type]
fields ||= parser.fields

TSV.traverse(parser) do |k,v|
  next unless k.include? key
  k = k.first if Array === k
  puts Log.color(:blue, "Key: #{ k }")
  if fields.length == 1
    if options[:lines]
      puts (Array === v ? v.flatten*"\n" : v.to_s ) 
    else
      puts (Array === v ? v.flatten*"\t" : v.to_s ) 
    end
  else
    fields.zip(v).each do |field,v|
      puts "#{Log.color :magenta, field+":"} #{v}"
    end
  end
end

Version data entries

179 entries across 179 versions & 1 rubygems

Version Path
rbbt-util-5.26.86 share/rbbt_commands/tsv/get
rbbt-util-5.26.85 share/rbbt_commands/tsv/get
rbbt-util-5.26.84 share/rbbt_commands/tsv/get
rbbt-util-5.26.83 share/rbbt_commands/tsv/get
rbbt-util-5.26.82 share/rbbt_commands/tsv/get
rbbt-util-5.26.81 share/rbbt_commands/tsv/get
rbbt-util-5.26.80 share/rbbt_commands/tsv/get
rbbt-util-5.26.79 share/rbbt_commands/tsv/get
rbbt-util-5.26.78 share/rbbt_commands/tsv/get
rbbt-util-5.26.77 share/rbbt_commands/tsv/get
rbbt-util-5.26.76 share/rbbt_commands/tsv/get
rbbt-util-5.26.75 share/rbbt_commands/tsv/get
rbbt-util-5.26.74 share/rbbt_commands/tsv/get
rbbt-util-5.26.73 share/rbbt_commands/tsv/get
rbbt-util-5.26.72 share/rbbt_commands/tsv/get
rbbt-util-5.26.71 share/rbbt_commands/tsv/get
rbbt-util-5.26.70 share/rbbt_commands/tsv/get
rbbt-util-5.26.69 share/rbbt_commands/tsv/get
rbbt-util-5.26.68 share/rbbt_commands/tsv/get
rbbt-util-5.26.67 share/rbbt_commands/tsv/get