Como posso tornar este comando SED mais portátil?

Como posso tornar este comando SED mais portátil?

Estou usando o seguinte sedcomando:

cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\n/'

O que normaliza assim:

4330M-p  ->  Ver<newline>

Isso funciona bem com GNU SED, mas com BSD SED no Mac OS X, o \n se transforma em algo nassim:

4330M-p  ->  Vern

Para normalizar alguma saída que contém um número de versão que muda com o tempo para uma string estática, seguida por uma nova linha. Isso é usado como parte do teste onde a saída após sedo processamento é comparada diffcom um arquivo golden conhecido e não queremos falhas devido à alteração do número da versão e precisamos ainda de uma nova linha adicionada para nossos propósitos.

Como posso substituir por uma string que adiciona uma nova linha de uma forma que funcione nas versões GNU e BSD sed, ou devo apenas instalar o GNU sedno Mac OS X porque isso não pode ser feito?

Responder1

Você pode criar uma nova linha literal em seu script, assim:

cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\
/'

informação relacionada