• 本页内容

40. 打印模式空间


sed n 命令打印当前模式空间并从输入文件中获取下一行。 这种情况发生在命令执行的中间,因此如果它发生在其他命令中间,它可能会改变正常的流程。

打印每行的模式空间:

$ sed n employee.txt
101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager

如果在使用 n 命令时指定 -n 标志,sed 将不会打印任何内容。

$ sed -n n employee.txt

正如我们之前讨论的,正常的 sed 执行流程是读取、执行(所有可用的 sed 命令)、打印、重复。

sed n 命令允许您更改该流程。 sed n 命令将打印当前模式空间,清除当前模式空间,从输入文件读取下一行,然后继续命令流程。

让我们假设您在 n 命令之前有 2 个 sed 命令,在 n 命令之后有 2 个命令,如下所示。

sed-command-1
sed-command-2
n
sed-command-3
sed-command-4 

在这种情况下,sed-command-1sed-command-2 将应用于模式空间中的当前行; 当 sed 遇到 n 命令时,它将从模式空间中清除当前行,从输入文件中读取下一行,并将 sed-command-3sed-command-4 应用于 sed 模式空间中新读取的行。

注意:正如您在上面的示例中看到的,sed n 命令本身相对无用。 然而,当与下一节 hack 中讨论的 hold 模式命令结合使用时,它的功能非常强大。