В одну сторону
perl -wlnE'say join " ", (split " ", $_, 3)[-1,0]' input.txt
Это ограничивает split тремя терминами - сначала два поля, полученные обычным расщеплением по заданному шаблону, а затем остальные, здесь содержащие имя .
Он не будет правильно выстраиваться, как в показанном выводе.
Если правильное выравнивание является обязательным, то есть еще что сделать, так как сначала нужно увидеть весь файл чтобы знать, какой должна быть ширина поля. Тогда «one» -liner (программа командной строки) будет
perl -MList::Util=max -wlne'
push @recs, [ (split " ", $_, 3)[-1,0] ];
END {
$m = max map { length $_->[0] } @recs;
printf("%-${m}s %s\n", @$_) for @recs
}' input.txt
Если допустима ширина поля, заданная априори, как указано в комментарии, мы можем сделать
perl -wlne'printf "%-20s %s\n", (split " ", $_, 3)[-1,0]' input.txt
Спасительная благодать для очевидного недопущения сюда - что с именами, которые длиннее? - это то, что только те конкретные строки будут не в порядке.