我如何检查OS X中的sed版本?
我知道如果sed
是GNU版本,版本检查可以像做一样
$ sed --version
但是这在OS X中不起作用,我该怎么做?
这可能不是你正在寻找的答案,但你不能。 Mac OS X sed
无法显示版本号。
二进制文件中甚至没有版本号:
$ 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
尽管text_cmds
的各种版本的sed
没有太多变化。
10.0.0
在1998年秋季使用NetBSD sed
10.3.0
使用2002年秋季的FreeBSD sed
,但保持手册页不变,添加-E
扩展正则表达式和-i
就地编辑。 10.4.0
已经进行了一些修改以进行就地编辑,并且从2004年秋季开始将手册页更改为FreeBSD手册页。 10.5.0
从2005年秋季更新为FreeBSD sed,添加-l
行缓冲输出和更多改进/修复以便就地编辑。 10.6.0
在手册页中增加了对compat(5)
的引用。 可以使用uname -r
或sw_vers -productversion
检查操作系统的版本,而不是sed
实用程序:
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实用程序没有版本化,因为它们被认为是其操作系统的一部分)
链接地址: http://www.djcxy.com/p/26379.html上一篇: How can I check the version of sed in OS X?
下一篇: How do I stop a command inside an alias from running when .bashrc is sourced?