无论如何,我是否可以编写一个perl脚本来打印包含用户输入字符串的文件中的所有行?
答案 0 :(得分:5)
这个答案有两个不同的概念:
注意使用quotemeta。当用户输入包含RE特定字符时,这一点很重要(如果你不处理它,甚至可能会创建一个illigel RE。)
以下是代码:
print "Looking for: ";
my $input = <>;
chomp $input;
my $re = quotemeta $input;
open my $fh, "<", "myfile.txt" or die $!;
while( <$fh> ) {
print if /$re/;
}
close $fh;
答案 1 :(得分:1)
添加正则表达式修饰符“ep>
print "Name: ";
my $string = <>;
open FILE, "test.txt" or die $!;
while(<FILE>) {
chomp;
print "$_\n" if(/$string*/i);
}
close FILE;
答案 2 :(得分:0)
哦,想通了怎么做。结果很简单 但是,如果我不希望搜索区分大小写,我该怎么做呢?
print "Name: ";
my $string = <>;
open FILE, "test.txt" or die $!;
while(<FILE>) {
chomp;
print "$_\n" if(/$string*/);
}
close FILE;
答案 3 :(得分:0)
一个班轮:
perl -nE 'BEGIN{$pattern=shift};say if /$pattern/i' pattern filename(s)
或
perl -nE 'BEGIN{$pattern=shift};say "$ARGV $.: $_" if /$pattern/i' pattern filename(s)
获取文件和行号。
答案 4 :(得分:0)
你的while循环体有点复杂。这也有效:
while (<FILE>) { print if /$string/i }
无需选择换行符,然后将其重新添加。