Как я могу проверить версию sed в OS X?

Я знаю, еслиsed это версия GNU, проверка версии может быть сделана как

$ sed --version

Но это не работает в OS X. Как я могу это сделать?

Ответы на вопрос(2)

sed вtext_cmds Есть не так много изменений.

10.0.0 Используется NetBSDsed с осени 1998 года10.3.0 Используется FreeBSDsed с осени 2002 года, но оставил man-страницу без изменений, добавив-E расширенные регулярные выражения и-i редактирование на месте.10.4.0 Были некоторые исправления для редактирования на месте, и с осени 2004 года она изменила man-страницу на man-страницу FreeBSD.10.5.0 Обновлен до FreeBSD sed с осени 2005 года, добавив-l линейный буферизированный вывод и больше уточнений / исправлений для редактирования на месте.10.6.0 Добавлена ​​ссылка наcompat(5) на странице руководства.

Версию операционной системы можно проверить вместоsed утилита, либо используяuname -r или жеsw_vers -productversion:

case $(sw_vers -productversion) in
10.[012].*)     echo no in-place editig, EREs, or line-buffered output;;
10.[45].*)      echo no line-buffered output;;
10.[6789].*)    echo newest version as of writing;;
10.1[01].*)     echo newest version as of writing;;
esac

(Утилиты BSD не имеют версий, потому что они считаются частью их операционной системы)

 TrinitronX11 июн. 2019 г., 21:51
К сожалению, управление версиями и стандарты влияют даже на пример тестового сценария. На macOS10.14.5 (Мохаве), флаг командной строки должен иметь заглавнуюV в-productversion: case $(sw_vers -productVersion) in, Это вернется10.14.5 на Мохаве. Тем не менееbash case заявление10.[45].*)  тогда сопоставление с образцом не работает (facepalm). Иронично, что некоторые из основных различий междуsed версии - это POSIX ERE (расширенные регулярные выражения), которые связаны с сопоставлением с образцом. Возможно, нужно добавить этот шаблон?10.1[01234].*)
Решение Вопроса

это не тот ответ, который вы ищете, но вы не можете. Mac OS Xsed не имеет возможности показать номер версии.

В двоичном файле даже нет номера версии:

$ strings $(which sed)
$FreeBSD: src/usr.bin/sed/compile.c,v 1.28 2005/08/04 10:05:11 dds Exp $
$FreeBSD: src/usr.bin/sed/main.c,v 1.36 2005/05/10 13:40:50 glebius Exp $
$FreeBSD: src/usr.bin/sed/misc.c,v 1.10 2004/08/09 15:29:41 dds Exp $
$FreeBSD: src/usr.bin/sed/process.c,v 1.39 2005/04/09 14:31:41 stefanf Exp $
@(#)PROGRAM:sed  PROJECT:text_cmds-88
malloc
%lu: %s: unexpected EOF (pending }'s)
0123456789/\$
%lu: %s: command expected
%lu: %s: invalid command code %c
%lu: %s: command %c expects up to %d address(es), found %d
%lu: %s: unexpected }
%lu: %s: extra characters at the end of %c command
%lu: %s: command %c expects \ followed by text
%lu: %s: extra characters after \ at the end of %c command
%lu: %s: filename expected
w command
read command
branch
label
%lu: %s: empty label
%lu: %s: substitute pattern can not be delimited by newline or backslash
%lu: %s: unterminated substitute pattern
%lu: %s: extra text at the end of a transform command
%lu: %s: unterminated regular expression
%lu: %s: expected context address
realloc
%lu: %s: whitespace after %s
%lu: %s: duplicate label '%s'
%lu: %s: RE error: %s
%lu: %s: \ can not be used as a string delimiter
%lu: %s: newline can not be used as a string delimiter
%lu: %s: unbalanced brackets ([])
bin/sed
Unix2003
123456789
%lu: %s: \%c not defined in the RE
%lu: %s: unescaped newline inside substitute pattern
%lu: %s: unterminated substitute in regular expression
%lu: %s: more than one number or 'g' in substitute flags
%lu: %s: overflow in the 'N' substitute flag
%lu: %s: no wfile specified
%lu: %s: bad flag in substitute command: '%c'
%lu: %s: transform pattern can not be delimited by newline or backslash
%lu: %s: unterminated transform source string
%lu: %s: unterminated transform target string
%lu: %s: transform strings are not the same length
%lu: %s: undefined label '%s'
%lu: %s: unused label '%s'
Eae:f:i:ln
setlinebuf() failed
stdout
"%s"
 ..."
-i may not be used with stdin
stdin
rename()
%s: %s %s
in-place editing only
works for regular files
%s: name too long
%s/.!%ld!%s
%s: %s
usage: sed script [-Ealn] [-i extension] [file ...]
       sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]
first RE may not be empty
RE error: %s
%lu: %s: \%d not defined in the RE
COLUMNS
\abfrtv
\%03o
 Will05 июн. 2016 г., 10:59
Нет проблем, рад помочь! :)
 William Pursell05 июн. 2016 г., 14:38
Хотя нет официального номера версии,strings ouput показывает версии RCS и даты для 4 файлов исходного кода. Этого должно быть достаточно, в зависимости от того, зачем нужна строка версии.
 tsrrhhh05 июн. 2016 г., 10:47
Удивительно, что нет номера версии даже в двоичном виде. благодарю вас. очень полезно!
 ShpielMeister06 сент. 2018 г., 02:02
также `ПРОЕКТ: text_cmds-88`, как указано выше. на Сьерра 10.12.6. я получил@(#)PROGRAM:sed PROJECT:text_cmds-97

Ваш ответ на вопрос