当前位置: 首页 > 面试题库 >

带有-i选项的sed命令在Mac上失败,但在Linux上工作

禄源
2023-03-14
问题内容

我已成功使用以下sed命令在Linux中搜索/替换文本:

sed -i 's/old_link/new_link/g' *

但是,当我在Mac OS X上尝试时,得到:

“命令c期望\后跟文本”

我以为Mac运行的是普通的BASH shell。这是怎么回事?

编辑:

根据@High Performance,这是由于Mac sed具有不同的(BSD)风格,因此我的问题将是如何在BSD中复制此命令sed

编辑:

这是导致此情况的一个实际示例:

sed -i 's/hello/gbye/g' *

问题答案:

如果使用该-i选项,则需要为备份提供扩展名。

如果你有:

File1.txt
File2.cfg

该命令(注意缺乏之间的空间-i,并''-e以使其在Mac和在GNU新版本一起使用):

sed -i'.original' -e 's/old_link/new_link/g' *

创建2个备份文件,例如:

File1.txt.original
File2.cfg.original

没有可移植的方法来避免制作备份文件,因为不可能找到适用于所有情况的sed命令混合:

  • sed -i -e ...-创建-e备份时在OS X上不起作用
  • sed -i'' -e ... -不适用于OS X 10.6,但适用于10.9+
  • sed -i '' -e ... -不适用于GNU

注意 鉴于在所有平台上都没有sed命令,您可以尝试使用另一个命令来获得相同的结果。

例如, perl -i -pe's/old_link/new_link/g' *



 类似资料:
  • Windows---------------: Linux---------- 那么,什么是主要的原因是这个问题,看起来一切都好从其他的选择 Apache Maven 3.6.0(97C98EC64A1FDFEE7767CE5FFB20918DA4F719F3;2018-10-24T14:41:47-04:00)Maven主页:/home/user/tools/Maven/apache-maven

  • 问题内容: 我有一个文件,其中我必须替换所有单词,如$ xyz,对于它们,我必须替换为以下内容: 这个文件也有一些像$ {abcd}这样的词,我不必更改。我正在使用此命令 sed -i’s?\ $([A-Z _] +)?\ $ {\ 1}?g’文件 它可以在命令行上正常工作,但不能在perl脚本中作为 ; 我想念什么?我认为添加一些反斜杠会有所帮助。我尝试添加一些但没有成功。 谢谢 问题答案: 在

  • 我有脚本登录到一个站点,然后等待主页按钮得到加载。我设置了fluentwait以等待元素可见。但WebDriver不会等待并立即失败,因为home按钮未加载。 以下抛出错误- 理想情况下,它应该等待Home按钮显示。但它正在失败。这在Windows上的Chrome,Firefox,IE,Edge都能用,但在Mac上的Safari上却不行。

  • 我试图在Jenkins的。NET Core2.0解决方案上使用Windows上的Sonarqube MsBuild启动Sonarqube。 当我从Jenkins工作区执行以下脚本时,它可以正常工作: null

  • 问题内容: 我在JBoss eap 6.1服务器上运行Arquillian测试(由jenkins作业启动)时遇到问题。在JBoss 7.1.1服务器上运行测试没问题,但是当我切换到eap 6.1时,所有测试都收到以下异常: 如果我在本地计算机上的EAP 6.1服务器上运行测试,则一切工作正常(配置相同,因此不会出现问题)。 有谁知道可能是什么问题? Arquillian依赖项: managed 问

  • 我有一个新安装的Debian Wheezy服务器,运行Jenkins1.596(最新版本),从官方的deb包安装。 为了和Jenkins一起玩,我编写了一个新的Maven项目,该项目可以通过Git进行验证。 下面是Jenkins服务器在构建期间生成的日志: 我尝试用JDK7和JDK8构建都失败了。