我想从一个大文件grep模式。但是使用grep它非常慢并且grep模式也不区分大小写。所以,我读到perl文件读取速度更快。请有人以电子邮件的方式告诉我perl。
感谢。
答案 0 :(得分:2)
cat File1.txt File2.txt | grep -in“exception”| grep -v“pattern”
在perl:
perl -ne 'print "$.:$_" if /exception/i and !/pattern/' File1.txt File2.txt
或没有cat
:
grep -in "exception" File1.txt File2.txt | grep -v "pattern"
答案 1 :(得分:0)
grep -i 'pattern' file
- > perl -lne 'print if(/pattern/i)' file
grep -vi 'pattern' file
- > perl -lne 'print unless(/pattern/i)' file
如果您想要所有包含行数的内容,请替换print
在上面的命令中使用print "$. $_"
答案 2 :(得分:0)
我怀疑Perl会在这方面给你带来性能优势。 grep实用程序是用C编写的预编译二进制文件; Perl是一种解释型语言,具有额外的性能开销,例如GNU grep没有。如果grep很慢,瓶颈很可能是文件从磁盘加载到主内存中。文件有多大?
仅供参考,grep有标志,可以使用不区分大小写的匹配和Perl样式的正则表达式语法。
% grep -i 'abc' <file> # Matches abc, ABC, aBc, etc.
% grep -i 'ab\|cd' <file> # Matches ab or cd
% grep -P 'ab|cd' <file> # Matches ab or cd
等效的Perl程序是:
# grep.pl
$pat = shift;
while(<>) { if(/$pat/i) { print; } }
可以作为
调用perl grep.pl abc file1.txt file2.txt ...
我的建议,坚持使用grep。