Автор:
n4n
Описание: Find string or word in the text file(s)
Язык: Perl
#!/usr/bin/perl
#
# plUnixBox::sFind.pl - Find string or word in the text file(s)
# Version: 0.1
# (c)ode by Grishkovtsov GE. aka n4n0bit
# http://grishkovtsov.blogspot.com/
#
use strict;
use warnings;
use Getopt::Std;
our $VERSION = 0.1;
main:
{
my $lc = 0; # Line Counter
my (%rslt, %opt);
getopts("p:s:e:vV", \%opt);
usage() unless @opt{'p','s'};
foreach my $fn ( `find $opt{'p'} -type f` )
{
chomp $fn;
next unless -f $fn;
open FH, $fn or die "Can't open $fn: $!";
while(my $str = <FH>)
{
$lc++;
chomp $str;
if($str =~ /$opt{'s'}/)
{
$str =~ s/^\s+//;
$rslt{$lc}{'f'} = $fn;
$rslt{$lc}{'s'} = $str;
syswrite STDOUT, "[$lc] $fn:\n$str\n\n" if $opt{'v'};
}
}
close FH;
$lc = 0;
}
if(keys %rslt > 0)
{
system("clear") unless $opt{'v'};
print "/*\n";
print " * plUnixBox::sFind.pl - Result:\n";
print " */\n";
my(%tmp, $c);
foreach my $l ( keys %rslt)
{
$c++;
print "[$c] $rslt{$l}{'f'}: $l\n";
print " $rslt{$l}{'s'}\n" if $opt{'V'};
$tmp{$c} = "$opt{e} +$l $rslt{$l}{'f'}" if $opt{'e'};
}
if($opt{'e'})
{
print "* What opened?: ";
while(my $in = <STDIN>)
{
chomp $in;
if($tmp{$in}) { system($tmp{$in}); }
else { print "* Error: $in not found number, please reinput document number: "; }
}
}
}
else
{
system("clear");
print "/*";
print " * plUnixBox::sFind.pl - result in 0";
print " */";
}
}
sub usage
{
print "/* \n";
print " * Usage: $0 [OPTION]\n *\n";
print " * Options:\n";
print " * -p Find path\n";
print " * -s What you find. You can use a word or PERL regular expression\n";
print " * -e Open file editor and goto the find string. Support programm: vi, nano, mcedit\n";
print " * -v Show find string in real-time\n";
print " * -V Show find string after find\n";
print " * eXamples:\n";
print " * $0 -p /foo/bar -s system\n";
print " * $0 -p /foo/bar -s '/passwd/i' -v\n";
print " * $0 -p /foo/bar -s '/passwd/i' -e nano\n";
print " * $0 -p /foo/bar -s '/passwd/i' -e mcedit -V\n";
print " */\n";
exit(1);
}
|
Последние размещения:
biophreak (Plain Text)
Raik (PHP)
MUSbKA (Plain Text)
MUSbKA (Plain Text)
nekitozzz (C++)
nekitozzz (Plain Text)
nekitozzz (C++)
ksurent (Perl)
MUSbKA (C++)
stalin_alex (C++)
dzantiev (Plain Text)
unreal (C++)
eug2b (Plain Text)
|