Я использую следующую команду 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 ответ1

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .