Übereinstimmung bestimmen. Wie gleich sind 2 Strings? gelößt

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
deb
Beiträge: 82
Registriert: 18.09.2005 13:30:20

Übereinstimmung bestimmen. Wie gleich sind 2 Strings? gelößt

Beitrag von deb » 05.03.2006 15:57:44

Hi.

Am besten ein Beispiel

#/!bin/Bash
a="Das ist ein Test"
b="Das Ist ein Teest"


Ich würde gerne $a mit $b vergleichen lassen und die Übereinstimmung in Prozent weiterverarbeiten.

In diesem Falle wäre es wohl so ca. 95% gleich.

Für mich noch akzeptable und als "true" einnehmbar.



Gibt es dafür ein Proggi oder muss man sich da selber was in der Bash zusammenschreiben?

Wenn es kein Programm gibt, wie kann ich eine Variable Byte für Byte einzeln auslesen ?
Zuletzt geändert von deb am 05.03.2006 17:25:57, insgesamt 1-mal geändert.

Benutzeravatar
Mr_Snede
Beiträge: 2323
Registriert: 08.07.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ruhrpott

Beitrag von Mr_Snede » 05.03.2006 16:25:06

ähnlicher thread im Pythonforum:
http://www.python-forum.de/viewtopic.php?t=5322
beachte bitte die tolle Idee von mir auf der 1. Seite ;-)
Software Finder - Software in Kategorien Debian ohne Ballast - Tipps für ein schlankes Debian

deb
Beiträge: 82
Registriert: 18.09.2005 13:30:20

Beitrag von deb » 05.03.2006 17:00:53

Mr_Snede hat geschrieben:ähnlicher thread im Pythonforum:
http://www.python-forum.de/viewtopic.php?t=5322
beachte bitte die tolle Idee von mir auf der 1. Seite ;-)

mal kurz den Thread überschaut und irgendwo auf levenshtein in php gestoßen

OK. Danke. Hast mich meinen Ziel sehr nahe geführt.



Meine erste Umsetzungs-Lösung:

eine php-script dateianlegen mit ausfürhungsrechte

test.php

Code: Alles auswählen

#!/usr/bin/php
<?php
        $arg1 = $argv["1"];
        $arg2 = $argv["2"];
        echo levenshtein ( $arg1, $arg2 );
?>
./test.php "Das ist ein Test" "Das ist eine Testseite"
ergibt 6 ;-)


Und nun wohl meine endgültige Lösung:

Code: Alles auswählen

#!/usr/bin/php
<?php
        $arg1 = $argv["1"];
        $arg2 = $argv["2"];
        $count = levenshtein ( $arg1, $arg2 );
        $len = ( strlen($arg1) + strlen($arg2) ) / 2;
        $perc = round ( ( 100 - $count / $len * 100 ), 0 );
        echo $perc;
?>
./test.php "Das ist ein Test" "Das ist eine Testseite"
ergibt 68 Prozent

Jetzt noch ein.
ln -s test.php /usr/bin/levenshtein
und schon kann ich es wunderbar in meinen Scripten nutzen ;-)

thxs, Mr_Snede


Falls jemand trotz dem noch ne reine BASH-Lösung drauf hat, nehme ich gerne :-)

Antworten