Поскольку вы уже приняли ответ, я пишу этот ответ для справки для будущих читателей, которые ищут похожие проблемы, но не совсем ваши:
Как уже отвечали люди, способ имитации grep с помощью perlиспользовать онлайн-подход.Для использования perl в качестве «лучшего» grep (и найти и вырезать и ...) я рекомендую книгу минимальный perl , и вам повезло, потому что глава для 'perl как «лучше"grep ' является одной из примеров глав.
Здесь у вас есть другие примеры, вдохновленные книгой:
perl -wnle '/foo/ and print' null.txt # normal grep
perl -wnle '/foo/ and print "$ARGV: $_"' null.txt # grep -H
perl -wnle '/foo/ and print $ARGV and close ARGV' null_1.txt null_2.txt # grep -l
В последнем примере ARGV является текущим дескриптором файла, и какс помощью -l вы заинтересованы в поиске файлов с соответствием, вы можете напечатать имя файла и перейти к следующему файлу после первого совпадения в файле.
Также вы можете искать по абзацу вместо строки:
$ perl -00 -wnl -e '/\bBRIBE\b/i and print;' SenQ.testimony
I knew I'd be in trouble if
I ACCEPTED THE BRIBE!
So I did not.
My minimum bribe is $100k, and she only offered me $50k,
so to preserve my pricing power, I refused it.
Или найти только первое совпадение:
$ perl -00 -wnl -e '/\bBRIBE\b/i and close ARGV;' SenQ.testimony
I knew I would be in trouble if
I ACCEPTED THE BRIBE!
So I did not.
И, наконец, если вы спросите о grep и perlЯ думаю, что я должен упомянуть ACK .Он реализует в Perl функциональность grep и расширяет ее.Это замечательный инструмент, и в качестве плюса вы можете иметь его также в виде пакета CPAN.Я всегда использовал в качестве командной строки, я не знаю, можете ли вы получить доступ к его методам напрямую из ваших Perl-программ, но это было бы очень хорошо.