, ben benzer sorunlar ararken gelecek okuyucular için başvurmak üzere bu cevabı yazarken, ama değilim tam olarak senin:
kişi zaten cevap gibi
ile grep simüle yolu Perl, çevrimiçi yaklaşımı kullanmaktır. Perl'in “better” grep olarak kullanılması için (ve bul ve kes ve ...) minimal perl kitabını tavsiye ediyorum ve 'perl as a "better" grep' bölümünün örnek bölümlerden biri olduğu için şanslısınız. Son örnekte
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 akım dt ve olduğu gibi -l Dosyayı yazdırabilirsiniz maçı ile dosya bulma ilgilenen: İşte
Eğer kitaptan esinlenerek fazla örnek var Bir dosyada ilk eşleşmeden sonra bir sonraki dosya için ad ve git. Ayrıca
yerine çizgi ile paragrafta göre arama yapabilirsiniz:
$ 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.
Veya sadece ilk eşleşme bulmak:
$ 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.
Ve grep ve Perl hakkında sorarsanız nihayet, ben gerektiğini thay düşünüyorum ACK. Bu, grep işlevselliğini perl olarak uygular ve genişletir. Bu harika bir araçtır ve ayrıca bir CPAN paketi olarak da alabilirsiniz. Her zaman bir komut satırı olarak kullanıyorum, yöntemlerine doğrudan perl programlarınızdan erişip erişemeyeceğinizi bilmiyorum ama bu çok güzel olurdu.
- Teşekkürler. – TCM
@coddadict, koddaki hataları düzeltmeyi çok iyi yaptınız, ancak bu soru ve kullanıcı tarafından kullanılan yaklaşım onu bir 'xy probleminde' dönüştürüyor, bu yüzden bu muhtemelen bir indoctrination olan konu dışı değil. Tüm dosyayı aynı anda okumamayı tavsiye etmeliydim (çizgiye yönelik grep'i simüle etmek istedi), iyi bir alışkanlık yaratmak için sadece grep() yerine grep() kullanarak onu tavsiye ederim. argümanlar açık. Ve hatta ona çevrimiçi yaklaşımı (ya da alternatif olarak çizgiyi sırayla) gösteren bir artı olurdu. –