带有-i选项的sed命令在Linux上执行成功,但在MacOS上失败了

问题:

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

sed -i 's/old_string/new_string/g' /path/to/file

然而,当我在Mac OS X上尝试时,我得到:

command i expects \ followed by text

我以为我的Mac运行的是一个正常的BASH shell。这是怎么了?


回答:

  • 在 Linux 系统上使用命令 man sed 查看手册,

NAME
sed - stream editor for filtering and transforming text

简介是用于过滤和转换文本的流编辑器。再翻到对 -i 选项的描述部分,

-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)

就地编辑文件(如果提供了后缀,则进行备份),可见参数后缀 SUFFIX 是可选的,即带或者不带这个参数都可以执行。

  • 在 MacOS 系统上使用命令 man sed 查看手册,

NAME
sed – stream editor

简介是流编辑器。再翻到对 -i 选项的描述部分,

p1

以类似于 -I 的方式就地编辑文件,但将每个文件与其他文件独立处理。特别是,每个文件中的行号从1开始,“$” 地址与当前文件的最后一行匹配,并且地址范围仅限于当前文件。最终结果是,每个文件都由一个单独的 sed 实例编辑。可见 -i 后面是必选参数 extension,不写上扩展名参数就会报错,于是命令执行失败。

如果要同一个命令在两种系统上都成功执行,可写成:

sed -i'' -e 's/old_string/new_string/g' /path/to/file
#或者
sed -i'.bak' -e 's/old_string/new_string/g' /path/to/file

笔者测试过的系统有:

  • linux 5.4.0-131-generic #147-Ubuntu
  • Darwin Kernel Version 21.6.0

参考:

  • stackoverflow question 4247068
  • man sed

相关阅读:

相关推荐

  1. linux如何执行带有目录命令

    2024-05-12 09:02:03       22 阅读
  2. Linux应用层使用I2C

    2024-05-12 09:02:03       33 阅读
  3. macOS 安装 Docker

    2024-05-12 09:02:03       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 09:02:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 09:02:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 09:02:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 09:02:03       20 阅读

热门阅读

  1. 2024-05-11 问AI:在深度学习中,学习率是什么

    2024-05-12 09:02:03       12 阅读
  2. Python 实战之量化交易

    2024-05-12 09:02:03       14 阅读
  3. CentOS常见命令

    2024-05-12 09:02:03       7 阅读
  4. CentOS常见的命令及其高质量应用

    2024-05-12 09:02:03       7 阅读
  5. P1098 [NOIP2007 提高组] 字符串的展开

    2024-05-12 09:02:03       10 阅读
  6. Unity 浮点数的精度问题

    2024-05-12 09:02:03       7 阅读
  7. 游戏行业该如何选择适合的服务器?

    2024-05-12 09:02:03       10 阅读
  8. 向量检索和关键字检索的区别?

    2024-05-12 09:02:03       8 阅读
  9. 使用 Spring Boot 构建 RESTful API 的最佳实践

    2024-05-12 09:02:03       7 阅读
  10. 三方库的调用方法

    2024-05-12 09:02:03       8 阅读
  11. ppt图片居中对齐

    2024-05-12 09:02:03       10 阅读