Como posso tornar este comando SED mais portátil?

0

Estou usando o seguinte comando sed :

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

Que normaliza assim:

4330M-p  ->  Ver<newline>

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

4330M-p  ->  Vern

Para normalizar alguma saída que contenha um número de versão que muda com o tempo para uma cadeia estática, seguida por uma nova linha. Isso é usado como parte do teste em que a saída após o processamento sed é comparada via diff com um arquivo dourado conhecido e não queremos falhas devido à alteração do número da versão e ainda precisamos de uma nova linha adicionada para nossos propósitos. / p>

Como posso substituir por uma string que adiciona uma nova linha de uma maneira que funcione na versão GNU e BSD de sed , ou devo instalar o GNU sed no Mac OS X porque isso não pode ser feito? / p>     

por WilliamKF 04.06.2015 / 01:03

1 resposta

0

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

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