Я второй ответ Руаха для регулярного выражения (с моей предложенной оптимизацией в комментариях). Простой в написании, но не простой и эффективный для запуска, если первая строка длинная.
Вот эффективный, не регулярное выражение, читаемый однострочный ответ:
$ perl -E '($n,$l)=(0,length $ARGV[0]); while ($n < $l) { $s = substr($ARGV[0], $n, 1); last if $s ne substr($ARGV[1], $n, 1); $n++ } say substr($ARGV[0], 0, $n)' abce abcdef
abc