我的应用程序将在所有版本的基于 Unix 的操作系统上运行,例如 Linux、MacOS、HP-UX、Sun Solaris、OSX 等。
我sed在一个常见的地方使用以下命令来删除文本文件中匹配的字符串:
sed -i '/string1/d' mytextfile
Run Code Online (Sandbox Code Playgroud)
这会在所有 *nixes 中工作吗?
Mic*_*mer 10
是的,sed适用于所有 Unix 版本。它是POSIX 标准的一部分:每个“官方”Unix 都包含它,所有 Linux 和 BSD 发行版也包含它。
该sed命令有多个不同版本,具有不同的扩展名。如果您坚持使用 POSIX 描述的sed选项和语言的通用子集,那么您的命令将适用于所有系统。
POSIX 没有强制要求,sed -i因为它是多余的,也不符合sed. sed最初是为了编辑流(因此它的名称为stream itor ed),而不是文件。POSIX 中以非交互方式编辑文件的正确工具是ed
printf "/text/d\nw" | ed file.txt
Run Code Online (Sandbox Code Playgroud)
可悲的是,许多当前的系统认为ed已经过时并且默认情况下不提供它,即使它是由 POSIX 强制要求的......但至少它应该可以轻松安装在大多数系统上(不像 GNU sed,它可能需要从源代码编译代码)。
编辑:此外,与问题的措辞所暗示的相反,d命令的(s)ed作用不仅仅是删除给定的字符串,它还删除包含它的任何行。
| 归档时间: |
|
| 查看次数: |
704 次 |
| 最近记录: |