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