问这个问题真是愚蠢。我应该知道为什么这失败了。以下命令可以在Linux中正常运行,但不能在MacOS Sierra上运行:
echo "ENGINE=MyISAM AUTO_INCREMENT=750 DEFAULT" | sed 's/ AUTO_INCREMENT=[0-9]\+//'
在linux上,命令结果为:
ENGINE=MyISAM DEFAULT
我尝试过此命令的各种迭代,但无法使其正常工作。我知道MacOS的sed是BSD版本而不是GNU版本,但是此替代命令仍然可以使用。我在做什么错了?
编辑: 建议的重复答案确实解决了我的问题,但措词措辞粗,。因此,TL; DR版本为:
MacOS使用BSD样式的sed。解决方案是简单地使用-E选项(扩展的正则表达式),该选项不需要转义某些字符(例如+符号)。对于大多数Linux系统上使用的GNU风格sed,此方法也可以正常工作。我希望这对以后的工作有所帮助。
答案 0 :(得分:0)
使用BRE代替ERE。这将在任何UNIX盒子上的任何外壳中使用任何sed来工作:
$ echo "ENGINE=MyISAM AUTO_INCREMENT=750 DEFAULT" | sed 's/ AUTO_INCREMENT=[0-9][0-9]*//'
ENGINE=MyISAM DEFAULT