Ich verwende tre-agrep
(manpage) , eine Implementierung von agrep
(manpage) , um einen ungefähren Mustervergleich durchzuführen. Dieses Dienstprogramm sucht nach Übereinstimmungen basierend auf der Entfernung von Levenshtein und der Benutzer kann die Strafe konfigurieren, die für das Ersetzen, Einfügen oder Löschen von Änderungen angewendet wird.
Ich möchte jedoch Wägungen differenziell über die Länge der Abfrage anwenden, und zwar mit einer geringeren Gewichtung für Löschungen am Anfang (linkes Ende) der Abfrage als am rechten. Die man
Seite für dieses Dienstprogramm gibt nicht an, dass eine solche Kontrollebene möglich ist.
Gibt es andere Kommandozeilen-Tools, bei denen eine ungefähre Übereinstimmung mit einer genaueren Kontrolle über die Fehlpaarungsstrafen möglich ist?
agrep
tatsächlich benötigt werden, könnte ich wahrscheinlich etwas ausdenken. Die Berechnung der Levenshtein-Distanz zweier Saiten ist wirklich sehr einfach. Ich würde ein Shell-Skript vorschlagen, das sich um den Aufruf von GNU awk dreht.Antworten:
Nein. Diese Art der Anpassung fällt nicht in den Geltungsbereich eines Linux-Tools und fällt in den Geltungsbereich des Schreibens Ihres eigenen Codes. Die Verwendung einer gängigen Hochsprache (Java, JavaScript, Python, Perl) benötigt etwas mehr Speicher als C und ist für Skriptsprachen etwas langsamer, dies ist jedoch für Ihren Anwendungsfall wahrscheinlich vernachlässigbar. Fragen Sie also beim Stackoverflow erneut nach den genauen Details, die Sie benötigen, und jemand könnte Ihnen einen Einzeiler anbieten.
quelle