script examples shell command-line sed

examples - sed shell



¿Cómo puedo verificar la versión de sed en OS X? (2)

Sé que si sed es la versión de GNU, la verificación de la versión se puede hacer como

$ sed --version

Pero esto no funciona en OS X. ¿Cómo puedo hacer eso?


Mirando la variada versión de sed en text_cmds no hay muchos cambios.

  • 10.0.0 utilizado NetBSD sed desde el otoño de 1998
  • 10.3.0 Utilizó FreeBSD sed desde el otoño de 2002, pero no modificó la página de manual, agregando -E expresiones regulares extendidas y -i edición en contexto.
  • 10.4.0 Tenía algunas correcciones para la edición in situ y cambió la página de manual a la página de manual de FreeBSD del otoño de 2004.
  • 10.5.0 actualizó a FreeBSD sed desde el otoño de 2005, agregando -l salida de buffer de línea y más refinamientos / arreglos para la edición in situ.
  • 10.6.0 Agregó una referencia a compat(5) en la página man.

La versión del sistema operativo se puede verificar, en lugar de la utilidad sed , ya sea usando uname -r o 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

(Las utilidades de BSD no están versionadas porque se consideran parte de su sistema operativo)


Probablemente esta no sea la respuesta que estás buscando, pero no puedes. Mac OS X sed no tiene opción para mostrar el número de versión.

Ni siquiera hay un número de versión en el binario:

$ 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