Представьте, что у вас есть исходный файл, в котором кто-то переименовал один символ в другой, используя простую текстовую замену.Вывод diff для этого файла, как правило, довольно длинный и не очень полезный идентификатор того, что произошло.То, что вы хотите знать, это то, что если изменение было просто s/a/b/g
, и если да, то что такое a
и b
- вы не будете рассказывать об этом инструменте заранее, ему придется отработать его длясам.(Здесь вы можете предположить, что «a» и «b» не будут содержать символов новой строки, ради аргумента.)
- Какой алгоритм вы бы использовали для поиска и замены?(легко)
- Как бы вы работали, если бы произошло несколько текстовых замен?(довольно просто)
- Как бы вы написали его для работы с выводом diff, не сравнивая ни один из исходных файлов?(довольно сложно)
- Как далеко вы можете это сделать, например, путем определения соответствия регулярному выражению, а не поиска / замены?(трудно)
- В файле, который содержит такие изменения наряду с другими, можете ли вы придумать эвристику, которая выдает выражение sed и значительно укороченный diff?(трудно)
Это вопрос для тех из вас, кому нравится разрабатывать алгоритмы, но он в значительной степени основан на реальном инструменте, который я хотел бы использовать, поэтому, если вам случится узнать хорошую командуинструмент линии, который делает любой из вышеупомянутых, бонусных пунктов.;)