Возможно, есть более аккуратный способ сделать это, но, похоже, работает следующее:
$ echo 'Ken Van de Wilde' | sed 's/\(\w\)\w*\( \|$\)/\1/g'
KVdW
$ echo 'Ruben Van Den Bosshe' | sed 's/\(\w\)\w*\( \|$\)/\1/g'
RVDB
Чтобы немного разбить это регулярное выражение, оно по очереди соответствует следующему:
- Буква слова, захваченная в первой группе:
\(\w\)
- Ноль или более букв слов:
\w*
- И, наконец, пробел или конецстрока:
\( \|$\)
Эта последовательность заменяется тем, что было захвачено в первой группе: \1