Skip to content

Instantly share code, notes, and snippets.

@ybenjo
Last active April 27, 2016 08:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ybenjo/25cede44e6d3faee2d6c166847508804 to your computer and use it in GitHub Desktop.
Save ybenjo/25cede44e6d3faee2d6c166847508804 to your computer and use it in GitHub Desktop.
cut with column names
#!/usr/bin/env ruby
# cat data.tsv | ccut -d delim -c name,name,name...
require 'trollop'
opts = Trollop::options do
opt :delim, 'delimitor', default: "\t"
opt :column, 'column name(s)', type: String
end
delim = opts[:delim]
column_names = opts[:column].split(',')
positions = [ ]
$<.each_with_index do |l, i|
ary = l.chomp.split(delim)
if i.zero?
header = [ ]
column_names.each do |c|
pos = ary.find_index(c)
unless pos.nil?
positions.push pos
header.push c
end
end
puts header.join(delim)
else
puts positions.map{|pos| ary[pos]}.join(delim)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment