用 sed 忽略整行

Bra*_*d B 1 tcsh sed

我在互联网上进行了高低搜索,但似乎找不到满足这个问题的答案 - 我需要使用sed来显示文件中的所有行,不包括其中的一组。

我不是要删除它们,也不是将它们重写为评论,而是简单地不显示它们,这就是我在网上搜索时遇到的问题。无论我怎么说,我都会得到与执行上述操作相关的结果。

我在 中尝试了否定符号sed -n '35,45'p /dir/file,但没有得到任何积极的结果。我忘记了什么?

Joh*_*024 5

要显示第 35 到 45行之外的所有行,请使用以下delete命令:

sed '35,45d' /dir/file
Run Code Online (Sandbox Code Playgroud)

这不会改变原始文件。它只是从输出中排除了行范围。

例子

考虑这个测试文件:

$ cat file
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)

我们可以排除第 2 到 4 行:

$ sed '2,4d' file
1
5
Run Code Online (Sandbox Code Playgroud)

  • @BradB 根据定义`d` sed-command 确实会删除,但是虽然`sed` 命令没有`-i` 选项,它不会改变文件。从`man sed --i[SUFFIX], --in-place[=SUFFIX] 就地编辑文件(如果提供扩展名则进行备份)` (2认同)