cutっぽい何か
30分プログラム、その147。cutっぽいものを作ってみよう。
cutは前につくったid:mzp:20070902:pasteの逆。こんな感じで使う。
$ paste [a-c] | cut -f 1 a a a ... $ paste [a-c] | cut -f 2-3 b c b c b c ....
使い方
$ ls -l ~/ | perl cut.pl --field='7-8' -delim='[\s]+' 21:28 Desktop/ 20:17 Documents/ 18:53 Library/ 12:02 Movies/ 21:52 Music/ 09:01 Pictures/ 2006 Public/ 10:08 Sites/ 09:33 Workspace/ .....
ソースコード
#! /usr/bin/perl # -*- mode:perl; coding:utf-8 -*- # # cut.pl - # # Copyright(C) 2007 by mzp # Author: MIZUNO Hiroki <hiroki1124@gmail.com> # http://mzp.sakura.ne.jp/ # # Timestamp: 2007/09/30 22:57:54 # # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # use strict; use warnings; use Getopt::Long; my $opt_field = 0; my $delim = q/\t/; GetOptions('field=s' => \$opt_field,'delim=s'=>\$delim); my ($begin,$end); if($opt_field =~ /(\d)-(\d)/){ $begin = $1; $end = $2; }elsif($opt_field =~ /(\d)/){ $begin = $end = $1; }else{ die "bad field" } while(<>){ my @fields = split /$delim/; print "@fields[$begin..$end]\n" if $begin < $#fields; }