unixでファイル内検索を使い易くする
terminalでファイル内検索をする時,普段は,
ls *\.txt|xargs grep XXX
もしくは,
find . -name '*\.txt'|xargs grep XXX
とかやってたけど,見難くてしょうがない.
#!/usr/bin/perl my $color1 = q{Red}; my $color2 = q{Yellow}; #================================================= my $font_color = { Black => '0;30', DarkGray => '1;30', Blue => '0;34', LightBlue => '1;34', Green => '0;32', LightGreen => '1;32', Cyan => '0;36', LightCyan => '1;36', Red => '0;31', LightRed => '1;31', Purple => '0;35', LightPurple => '1;35', Brown => '0;33', Yellow => '1;33', LightGray => '0;37', White => '1;37', }; my @files = @ARGV[0..(@ARGV-2)]; my $fcolor1 = $font_color->{$color1}; my $fcolor2 = $font_color->{$color2}; die q{font_color_error} unless($fcolor1 && $fcolor2); die q{param error} if( @ARGV < 2 ); my $grep = $grep1 = $ARGV[-1]; $grep1 = '\\'.$grep if( $grep =~ m!^\-! ); my $result = `grep '${grep1}' @files`; $result =~ s!${grep}!\033[${fcolor2}m${grep}\033[0m!gs; $result =~ s!\n!\n\n\n!gs; $result =~ s!(^|\n)(.+?:)!\033[${fcolor1}m${2}\033[0m\n!gs; print $result;
もっとスマートに書けるようになりたい.