yönelimli taraflı cezalarla agrep


16

Ben kullanıyorum tre-agrep (manpage) , bir uygulama agrep (manpage) yaklaşık desen eşleştirme gerçekleştirmek için. Bu yardımcı program Levenshtein mesafesine göre eşleşmeleri arar ve kullanıcı, değiştirme, ekleme veya silme düzenlemeleri için uygulanan cezayı yapılandırabilir.

Ancak, sorgu uzunluğu boyunca, yani sağa göre sorgunun başında (sol uç) silme işlemleri için daha düşük bir ağırlık ile farklı ağırlıklar uygulamak istiyorum. manBu yardımcı program için sayfa kontrolünün böyle bir düzeyi mümkündür göstermez.

Uyumsuzluk cezaları üzerinde daha hassas kontrol ile yaklaşık eşleştirmenin mümkün olduğu başka komut satırı araçları var mı?


5
AFAIK, tek kişi agrep. UNIX dünyasındaki göreceli belirsizliği (ki bu çok kötü) göz önüne alındığında bile bunu bilmenize şaşırdım. Teorik olarak, bu ağırlıkları kaynak kodunda ayarlayabilirsiniz, ancak bunun pratik olup olmadığını bilmiyorum. Aletlerin yazarlarıyla, hatta dayandıkları orijinal belgelerle iletişim kurmayı denediniz mi? Dikkat edin, muhtemelen şimdi eski osuruklar :)
Otheus

3
@Otheus Old farts hala kod yazabiliyor ;-)
Kusalananda

Python veya Awk'ta ifade olarak tanımlanan ekleme / silme / değiştirme maliyetleri ile Levenshtein eşleme yardımcı programı yazmak zor olmayacaktır. Sıkıcı kısım, gerçekten, tüm olası komut satırı seçenekleri. OP tipik bir komut satırı göstermeye ve hangi seçeneklere agrepgerçekten ihtiyaç duyduklarını söylemek isterse, muhtemelen bir şey kamçılayabilirim. İki dizenin Levenshtein mesafesini hesaplamak gerçekten çok kolaydır. GNU awk invokasyonunun etrafına sarılmış bir kabuk komut dosyası öneririm.
Nominal Hayvan

Yanıtlar:


1

Hayır. Bu tür özelleştirmeler bir Linux aracının kapsamı dışında ve kendi kodunuzu yazma kapsamına girer. Popüler bir üst düzey dil (Java, JavaScript, Python, Perl) kullanmak, C'den biraz daha fazla bellek kullanır ve kodlanmış diller için biraz daha yavaş olur, ancak muhtemelen kullanım durumunuz için ihmal edilebilir olacaktır. Bu yüzden, tam olarak ihtiyacınız olan ayrıntılarla stackoverflow'u yeniden sorun ve birisi size bir astar sunabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.