Как сделать эту команду SED более переносимой?

Как сделать эту команду SED более переносимой?

Я использую следующую sedкоманду:

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

Что нормализуется следующим образом:

4330M-p  ->  Ver<newline>

Это прекрасно работает с GNU SED, но с BSD SED на Mac OS X \n превращается в nследующее:

4330M-p  ->  Vern

Нормализовать некоторые выходные данные, содержащие номер версии, который меняется со временем, в статическую строку, за которой следует новая строка. Это используется как часть тестирования, где выходные данные после sedобработки сравниваются diffс известным золотым файлом, и мы не хотим сбоев из-за изменения номера версии, и нам также нужно добавить новую строку для наших целей.

Как мне заменить строку строкой, которая добавляет новую строку таким образом, чтобы это работало как в GNU, так и в BSD-версии sed, или мне просто установить GNU sedна Mac OS X, потому что это невозможно сделать?

решение1

Вы можете сделать буквальный перенос строки в своем скрипте, например так:

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

Связанный контент