合理的sed在哪里?


11

在优胜美地。sed很旧:\t例如无法理解。我安装了coreutils,找不到sed与之关联的任何东西。

我在这里有什么选择?


4
如果您运行带有-E选件的普通OS X sed ,则应接受\t。有关re_format详细信息,请参见手册页。
nwellnhof 2015年

应该,但事实并非如此。小牛10.9.5的echo -e 'foo\tbar' | sed -E 's/\t/blah/'收益率foo bar
2015年

Answers:


11

您需要安装gnu-sed,而不仅仅是coreutils:

brew install gnu-sed

然后,您必须在上添加以下行.bash_profile

export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
export MANPATH="/usr/local/opt/gnu-sed/libexec/gnuman:$MANPATH"

然后您的sed版本应该是最新的:

$ sed --version
sed (GNU sed) 4.2.2
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.

1
您不需要这些PATH陈述。Just brew install gnu-sed,它将以gsed
neu242

1
这些PATH语句使您可以使用命令sed而不是gsed。没必要,但是您无需记住将字母附加gsed命令中。
jherran 2015年

2
当然。但这可能会干扰期望sedBSD sed的程序。我不知道这是否有问题,但我希望它会成为问题。(如果是osx,然后是bsdisms)
neu242

alias sed=gsed在个人资料中,也许吗?
Kroltan'1

9

你的问题是标签homebrew,但使用的MacPorts的读者:运行sudo port install gsed拿到GNU的sed(可用的gsed命令,类似gfindfindutils端口)。


5

安装芬克。如果还没有的话,您还将需要XCode。

然后像这样安装最新的sed(以及许多其他有用的东西):

fink install sed


谢谢,我不知道
芬克

2
芬克已经老了。我建议改用Homebrew
neu242

2
@ neu242“老”怎么了?Unix已有45年的历史了,我们仍然在使用它。芬克(Fink)本身已经6年了,足以解决这些问题。Fink(和MacPorts)软件包会定期更新。
保罗

@paul哦,最近10年来,我从未遇到过使用Fink的任何人。很高兴得知它仍然可用!:)
neu242
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.