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

sed就位标志,可在Mac(BSD)和Linux上使用

袁秦迟
2023-03-14
问题内容

是否sed可以在Linux和Mac上调用无需备份的待办事情就地编辑?虽然sed似乎需要OS X附带的BSD sed -i '' …,但是GNU
sedLinux发行版通常随附将引号解释为空的输入文件名(而不是备份扩展名),sed -i …而是需要使用引号。

是否有任何两种语法都适用的命令行语法,所以我可以在两个系统上使用相同的脚本?


问题答案:

如果您真的只想使用sed -i“简单”的方法,那么以下DOES可以在GNU和BSD / Mac上运行sed

sed -i.bak 's/foo/bar/' filename

注意缺少空间和点。

证明:

# GNU sed
% sed --version | head -1
GNU sed version 4.2.1
% echo 'foo' > file
% sed -i.bak 's/foo/bar/' ./file
% ls
file  file.bak
% cat ./file
bar

# BSD sed
% sed --version 2>&1 | head -1
sed: illegal option -- -
% echo 'foo' > file
% sed -i.bak 's/foo/bar/' ./file
% ls
file  file.bak
% cat ./file
bar

显然,您可以删除这些.bak文件。



 类似资料:
  • 将你下载的tar包解压,并进入coreseek子目录: $tarxzvfcoreseek-3.2.14.tar.gz $cdcoreseek 首先安装MMSeg: $cdmmseg $./configure--prefix=/usr/local/mmseg $make $makeinstall $cd.. 运行配置 程序: $./configure configure程序有很多运行选项。完整的列表

  • 目录表 Linux和BSD用户 Windows®用户 概括 Linux和BSD用户 如果你正在使用一个Linux的发行版比如Fedora或者Mandrake或者其他(你的选择),或者一个BSD系统比如FreeBSD,那么你可能已经在你的系统里安装了Python。 要测试你是否已经随着你的Linux包安装了Python,你可以打开一个shell程序(就像konsole或gnome-terminal)

  • 问题内容: 当类似Bash的脚本以二进制形式执行而没有shebang时,如何确定由谁执行? 我猜想 使用 shebang 运行普通脚本是由binfmt_script Linux模块处理的,该模块检查shebang,解析命令行并运行指定的脚本解释器。 但是,如果有人在没有脚本的情况下运行脚本会发生什么?我已经测试了直接方法,发现里面没有内核魔术,即像这样的文件: 运行仅执行调用的已编译C程序将产生:

  • 问题内容: 我已成功使用以下命令在Linux中搜索/替换文本: 但是,当我在Mac OS X上尝试时,得到: “命令c期望\后跟文本” 我以为Mac运行的是普通的BASH shell。这是怎么回事? 编辑: 根据@High Performance,这是由于Mac 具有不同的(BSD)风格,因此我的问题将是如何在BSD中复制此命令? 编辑: 这是导致此情况的一个实际示例: 问题答案: 如果使用该选项

  • 问题内容: 我在项目中使用了野牛解析器。当我运行以下命令时: 我得到此错误sed:-i可能无法与stdin一起使用 该命令在linux机器上可以正常工作。我正在使用Mac OS X 10.9。仅在Mac OS X上引发错误。我不知道为什么。有人可以帮忙吗? 谢谢 问题答案: 您需要将输入文件作为最后一个参数。

  • 我在教科书上读到... 加减法不能导致溢出。引用一下, “如果一个数字为正数,另一个为负数,则加法后不会发生溢出,因为将正数与负数相加会产生幅值较小(…)的结果。”。 然而,通过经历一些问题,情况似乎并非如此,我想确认我计算的不是错误。 例如,这适用于4位加法减法器,其中M=1(这意味着用B减法),A=0101(5)和B=1010(10)。 通过取B=0110(-10)的2s补码并将数字相加,可以