Sha256: a3a13d2e551897511a596351a0ad4ee837c5730dd421c30f046a92d14d78cffa

Contents?: true

Size: 1.63 KB

Versions: 75

Compression:

Stored size: 1.63 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
-hh--header_hash* Change the character used to mark the header line (defaults to #)
-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], :header_hash => options[:header_hash]
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

75 entries across 75 versions & 1 rubygems

Version Path
rbbt-util-5.26.171 share/rbbt_commands/tsv/get
rbbt-util-5.26.170 share/rbbt_commands/tsv/get
rbbt-util-5.26.169 share/rbbt_commands/tsv/get
rbbt-util-5.26.168 share/rbbt_commands/tsv/get
rbbt-util-5.26.167 share/rbbt_commands/tsv/get
rbbt-util-5.26.166 share/rbbt_commands/tsv/get
rbbt-util-5.26.164 share/rbbt_commands/tsv/get
rbbt-util-5.26.163 share/rbbt_commands/tsv/get
rbbt-util-5.26.162 share/rbbt_commands/tsv/get
rbbt-util-5.26.161 share/rbbt_commands/tsv/get
rbbt-util-5.26.160 share/rbbt_commands/tsv/get
rbbt-util-5.26.159 share/rbbt_commands/tsv/get
rbbt-util-5.26.158 share/rbbt_commands/tsv/get
rbbt-util-5.26.157 share/rbbt_commands/tsv/get
rbbt-util-5.26.156 share/rbbt_commands/tsv/get
rbbt-util-5.26.155 share/rbbt_commands/tsv/get
rbbt-util-5.26.154 share/rbbt_commands/tsv/get
rbbt-util-5.26.153 share/rbbt_commands/tsv/get
rbbt-util-5.26.152 share/rbbt_commands/tsv/get
rbbt-util-5.26.151 share/rbbt_commands/tsv/get