É complicado com sed
, mas se perl
estiver bem, você pode fazer desta maneira
echo O S D Settings | perl -p -e 's/(\b[A-Z]) (?=.([^\w]|$))/$1/g'
Isso é difícil em sed
porque não suporta afirmações de look-ahead.
Testes:
echo O S D | perl -p -e 's/(\b[A-Z]) (?=.([^\w]|$))/$1/g'
echo O S D Settings | perl -p -e 's/(\b[A-Z]) (?=.([^\w]|$))/$1/g'
echo O S D. | perl -p -e 's/(\b[A-Z]) (?=.([^\w]|$))/$1/g'
echo One O DDE T. S Asdf Q R Tee | perl -p -e 's/(\b[A-Z]) (?=.([^\w]|$))/$1/g'
echo O S D\ | perl -p -e 's/([A-Z]) (?=.([^\w]|$))/$1/g'
Se você quiser uma solução malfeita com sed
, tente
echo O S D Settings | sed -e 's/ \([A-Z]\) \([A-Z] \)//g'
O que funciona para sua amostra, mas falhará em outros casos.
Testes:
echo O S D | sed -e 's/ \([A-Z]\) \([A-Z] \)//g'
echo O S D Settings | sed -e 's/ \([A-Z]\) \([A-Z] \)//g'
echo O S D. | sed -e 's/ \([A-Z]\) \([A-Z] \)//g'
echo One O DDE T. S Asdf Q R Tee | sed -e 's/ \([A-Z]\) \([A-Z] \)//g'
echo O S D\ | sed -e 's/ \([A-Z]\) \([A-Z] \)//g'