#!/usr/bin/perl -s use strict; our ($fs); $fs ||= ":"; my $f1 = shift; my $esq = shift or die("Usage: $0 filename schema\n"); my %c; @c{1..20}=(1..20); my $b = `head -1 $f1`; chomp $b; my $n=0; for (split(/\s*$fs\s*/,$b)){ $c{$_} = ++$n;} my $cmps= join(",", map {$c{$_}?('$'. $c{$_}):(die("Error: no $_ field\n"))} split(/\s*$fs\s*/,$esq)); my $com = sprintf("awk '%s' $f1", "BEGIN {OFS=FS=\"$fs\"} {print $cmps}"); system "$com";