Skip to main content
2 of 3
added 451 characters in body

perhaps :

echo "${cccccccc}"
echo
echo "${cccccccc}" \
\
| mawk -F. 'ORS=substr(";\n",_-(NR%_--),NF=_++)' \_=2 OFS= | ecp

A 25 27 50
B 35 37 75
C 75 78 80
D 99 88 76.

 
A 25 27 50;B 35 37 75
C 75 78 80;D 99 88 76

or even simpler - a solution that uses leverages lots of built-in variables to do the heavy lifting :

mawk -F. 'NF=sub(FS,(NR % _)?":" :"\n",ORS)' OFS='' \_=2

If you prefer a getline approach, then you don't even have to spend effort on calculating NR % 2 :

 echo;  echo "${cccccccc}"
 echo;  echo "${cccccccc}" \
 \
 | mawk -F. '$!_=$-_=sprintf("%s;%s",$( NF ^= !NF ),
                                     $!(NF  = getline))' OFS=''

A 25 27 50
B 35 37 75
C 75 78 80
D 99 88 76.

 
A 25 27 50;B 35 37 75
C 75 78 80;D 99 88 76