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