С учетом двух или более образцов текста, в частности сегментов кода, каков наиболее эффективный способ определения различий образцов и формирования шаблона, соответствующего каждому образцу?
Например, приведены следующие примеры кода:
cd ~/workspaces/project/tmp1/bin
rsync --recursive --progress /data/local/documents* data
cd ~/workspaces/project/we32usZ/bin
rsync --recursive --progress /data/local/lib* data
cd ~/workspaces/project/oiususs/bin
rsync --recursive --progress /data/local/usr* data
Как бы я вывел этот шаблон (где $ varN обозначает переменную с подстановочными знаками)?
cd ~/workspaces/project/$var1/bin
rsync --recursive --progress /data/local/$var2* data
Мой первоначальный подход состоит в том, чтобы сравнивать два образца, сравнивая каждую i-ю букву до тех пор, пока не будет найдено различие, затем искать, где заканчивается «переменная» часть текста, а затем повторить это для других образцов. Однако это кажется очень неэффективным и, очевидно, предполагает, что тексты очень похожи с самого начала. Есть ли лучший способ?