sed 'y/|;/\n|/;s/|/;/;y/\n/|/' <<\IN
Question ipsun; option 1 ; option 2 ; option 3 ; option 4 ; ... ; option n
IN
Note que isso não não usa um regexp para lidar com a maioria das substituições, mas usa uma tradução mais básica (e com muito mais desempenho) função para o fazer - e fá-lo de uma forma portátil POSIX. Isso deve funcionar em qualquer máquina com um POSIX sed instalado.
Ele traduz ; ponto e vírgula para | pipes e | pipes para \n ewlines simultaneamente. Os | pipes são separados como \n ewlines, caso algum deles ocorra em uma linha de entrada. Em seguida, ele s/// ubstituta o primeiro | pipe ocorrendo por ; ponto e vírgula, em seguida, converte todos \n ewlines em | pipes - restaurando assim qualquer um que possa ter reservado para manipular de forma robusta o único s/// ubstitution.
Enquanto eu uso um documento <<\IN here por causa da demonstração de copiar / pastável, você provavelmente deve usar <infile >outfile .
OUTPUT:
Question ipsun; option 1 | option 2 | option 3 | option 4 | ... | option n